首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新年快乐弦乐建设者

新年快乐弦乐建设者
EN

Code Golf用户
提问于 2022-02-10 17:12:47
回答 5查看 862关注 0票数 22

这个问题是由这个可怕的答案提出的。

挑战是编写一个程序或函数,该程序或函数接受一个正整数,并输出“祝您新年快乐”或稍加更改,以便该字符串的字符代码与输入的数字相加。空格也计算字符代码之和。

这种情况根本不重要;只要符合下面的规范,您就可以输出HappY New yEAR或其他东西。

规格如下:

输出的字符串必须包含happy new year。如上文所述,情况并不重要。

字符串的happy new year组件可以选择地在前面加上have a,在任何情况下都是这样。但是,如果字符串以happy开头,则在have a之前必须有一个空格。

在任何情况下,happy new year字符串都可以选择地后面跟着to youto之前的空间是强制性的。

请注意,Have a happy new year to you虽然语法上不正确,但对于此挑战而言是一个可接受的输出。

最后,在字符串的末尾,可以输出任意数量的感叹号。

总之,输出的字符串必须满足以下正则表达式:

代码语言:javascript
复制
/^(have a )?happy new year( to you)?!*$/i

在编写程序或函数时,您可能会认为,您只会得到可以构造“新年快乐”字符串的数字。

我不允许输出数组或列表格式,因为它违背了挑战的目的。

如果有多个解决方案,可以自由地输出其中任何一个解决方案、任何一个解决方案子集或所有解决方案。

由于这个挑战是密码-高尔夫,最短的代码(以字节为单位)将获胜。

测试用例

代码语言:javascript
复制
2014
-> Happy new year to you!

1995
-> HAPPY NEW YEAR TO You!!!!!!!!!!!!!!

989
-> HAPPY NEW YEAR

1795
-> Have a HAPPY new year!

2997
-> Have a HAppY new year to YOU!!!!!!!!!!!!!!!!!!!
EN

回答 5

Code Golf用户

发布于 2022-02-10 19:01:51

JavaScript (Node.js),130个字节

代码语言:javascript
复制
f=(n,s='',...a)=>n|!/^(have a )?happy new year( to you)?!*$/i.test(s)?f(...a,...[...f+f].map(_=>(a=!a)?s+Buffer([i++]):n-i,i=2)):s

在网上试试!

在任何计算机上耗尽内存,因为它使用的是128^14 args,但理论上它可以工作。

票数 6
EN

Code Golf用户

发布于 2022-02-11 06:31:45

Excel,219个字节

代码语言:javascript
复制
=LET(r,MOD(A1,33),m,(r<20)+(r<18)+1,s,REPT("HAVE A ",m=2)&"HAPPY NEW YEAR"&REPT(" TO YOU",m=3),a,INDEX({989;1410;1469},m),b,MOD(a-r,33),d,b+SUM((b>{5,8,12,14})*1),LOWER(LEFT(s,d))&MID(s,d+1,26)&REPT("!",(A1-a-b*32)/33))

受到@Arnauld S回答的启发。他的解决方案的一个巧妙之处在于,以“拥有A”开头的案例数量如此之少,因此不需要用不同的测试来解释这些空间。

链接到电子表格

=LET(r,MOD(A1,33),集r= n \mod 33

m,(r<20)+(r<18)+1,设置模式。模式1 > 19;模式2 [18, 19];模式3 < 18

s,REPT("HAVE A ",m=2)&"HAPPY NEW YEAR"&REPT(" TO YOU",m=3),如果模式2,前面加上“有A ";如果模式3,则附加”您“。

基字符串的a,INDEX({989;1410;1469},m),字符值和

基字符串与b,MOD(a-r,33),n \mod 33距离

将基字符串的d,b+SUM((b>{5,8,12,14})*1),部分转换为小写。括号中的数字代表空格。

LOWER(LEFT(s,d))&MID(s,d+1,26)&REPT("!",(A1-a-b*32)/33))返回字符串,并将适当数目的字符转换为小写加"!“达到目标号码。

票数 5
EN

Code Golf用户

发布于 2022-02-11 20:09:41

果冻,52 字节数

代码语言:javascript
复制
“ṭ½IṾFhĿ_)Wẓȷ⁻⁸ẉ»ḲŒP“7dx‘ịK€ŒuƤŻoƊ€Ẏ;þḶ”!xⱮƊẎOS⁼ɗƇ⁸Ḣ

一种接受正整数的一元链接,它产生一个字符列表(或0)。或打印有效结果(或0)的完整程序。

不要在网上尝试! (它不会结束)

相反,请参阅这个稍微修改过的测试套件,它考虑了较少的可能字符串(通过使用\frac{1}{33}作为许多可选的尾随!s)。

怎么做?

代码语言:javascript
复制
“...»ḲŒP“7dx‘ịK€ŒuƤŻoƊ€Ẏ;þḶ”!xⱮƊẎOS⁼ɗƇ⁸Ḣ - Link: integer, N
“...»                                    - "have a happy new year to you"
     Ḳ                                   - split at spaces
      ŒP                                 - powerset
        “7dx‘                            - [55,100,120]
             ị                           - index into -> [["happy", "new", "year"], ["have", "a", "happy", "new", "year"], {"happy", "new", "year", "to", "you"]]
              K€                         - join each with spaces -> ["happy new year", "have a happy new year", "happy new year to you"]
                     Ɗ€                  - last three links as a monad for each:
                ŒuƤ                      -   upper-case prefixes
                   Ż                     -   prefix with a zero
                    o                    -   logical OR (the full lower-case)
                       Ẏ                 - tighten
                               Ɗ         - last three links as a monad - f(N):
                          Ḷ              -   [0..N-1]
                           ”!            -   '!'
                             xⱮ          -   map with times -> ["", "!", "!!", ..., '!'*(N-1)]
                        ;þ               - table with concatenate
                                Ẏ        - tighten
                                      ⁸  - use N as the right argument of...
                                     Ƈ   - filter keep those for which:
                                    ɗ    -   last three links as a dyad - f(possibles, N):
                                 O       -     ordinals
                                  S      -     sum
                                   ⁼     -     equals N?
                                       Ḣ - head -> valid result or 0 if none exists
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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