首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >和弦好吗?

和弦好吗?
EN

Code Golf用户
提问于 2022-05-12 03:17:28
回答 2查看 94关注 0票数 -4

这是个好和弦吗?

定义的chord:

我们将chord定义为三个注释。

定义的note:

我们将note定义为17之间的一个数字。在音乐中,我们将1定义为do2定义为re3定义为fa,但是注释名并不重要。他们不会被包括在问题中,也很可能不会出现在一个黄金解决方案中。1是一个便条。08不是便条。正如我们稍后提到的,输入是由三个注释组成的列表,无效的注释将not显示为作为输入。所以,即使你在遇到无效输入时,打印的整首歌永远不会给你歌词,我也不在乎。(不过,我看不出这怎么会更像高尔夫。)

定义的good chord:

我们将good chord定义为:

  • 如果有两个音符是相同的,忽略其中一个。
  • 把音符分类。
  • 把结果放在钢琴上。例如,135看起来像X X X246357也是如此。
  • 如果任何一个注释是相邻的,则它被认为是一个bad chord,而不是一个good chord。也就是说,包含12的和弦是bad,包含17的和弦也是D41
  • 剩下的唯一可能性是:

三位数,

  • 135
  • 136
  • 137
  • 146
  • 147
  • 157
  • 246
  • 二四七
  • 257
  • 357

两位数,

  • 13本可以是113或133
  • 14本可以是114或144
  • 15本可以是115或155
  • 16本可以是116或166
  • 24本可以是224或244
  • 25本可以是225或255
  • 26本可以是226或266
  • 27本可以是227或277
  • 35本可以是335或355
  • 36本可以是336或366
  • 37本可以是337或377
  • 46本可以是446或466
  • 47个可能是447或477
  • 57本可以是557或577

只有一个数字,

  • 1,意思是111
  • 2,意思是222
  • 3,即333
  • 4,意思是444
  • 5,意思是555
  • 6,意思是666
  • 7,意思是777

请注意,上述可能性已经排序,while您不应该期望您的输入排序。另外,上述可能性表示为三位数字,while您的输入将是一个从1 到 <#>7 的三个数字列表。

我不希望有一个硬编码上面的值的答案,但是如果你打算这么做,或者出于某种原因,你被允许这么做,或者因为某种原因,你被允许。

您的挑战:

给定一个输入,决定它是否是good。返回真-y值或假-y值,真-y值(如1 )表示它是good,而假-y值(如0 )表示它是not good。不要使用诸如或\n (指示换行符)或[[]]等模糊值。

评分:

我是code-golf

EN

回答 2

Code Golf用户

发布于 2022-05-21 14:31:04

x86-64机器代码,19字节

代码语言:javascript
复制
31 D2 AD 0F AB C2 FF CF 75 F8 8D 04 12 85 D0 0F 94 C0 C3

在网上试试!

遵循类Unix系统的标准调用约定(来自systems AMD64 ABI),这将分别获取EDI和RSI中32位整数数组的长度和地址,并在AL中返回一个值。

在装配中:

代码语言:javascript
复制
.global f
f:  xor edx, edx    # Set EDX to 0.
r:  lodsd           # Load a number from the array into EAX, advancing the pointer.
    bts edx, eax    # Set the bit in that position in EDX to 1.
    dec edi         # Subtract 1 from EDI, counting down from the length.
    jnz r           # Jump back if that is not zero.
    lea eax, [rdx+rdx]  # Set EAX to 2 times EDX -- the bits move up by 1.
    test eax, edx   # Set flags based on the bitwise AND of EAX and EDX.
                    # This checks for adjacent bits being 1.
    setz al         # Set AL based on whether the result was zero.
    ret             # Return.
票数 1
EN

Code Golf用户

发布于 2022-05-22 10:52:29

Python 3,32字节

代码语言:javascript
复制
lambda l:not{*l}&{x+1for x in l}

在网上试试!

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/247191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档