首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >菲利·博纳契

菲利·博纳契
EN

Code Golf用户
提问于 2018-08-15 23:29:37
回答 5查看 752关注 0票数 14

比萨的莱昂纳多(约1175-约1245)被称为斐波纳契。但这实际上是拉丁文"filius Bonacci“(波纳契之子)的缩写,它是在18世纪(根据维基百科的说法)合成的。

在这个挑战中,您将得到1_st和20__th之间的序号(字面意义上),您必须在Fibonacci序列中返回相应的术语。

最重要的是序数将用拉丁文表示。

示例:“双抽取”→\$89\$。

全I/O表

代码语言:javascript
运行
复制
 input              | meaning | output
--------------------+---------+--------
 "primus"           |   1st   |    0
 "secundus"         |   2nd   |    1
 "tertius"          |   3rd   |    1
 "quartus"          |   4th   |    2
 "quintus"          |   5th   |    3
 "sextus"           |   6th   |    5
 "septimus"         |   7th   |    8
 "octavus"          |   8th   |   13
 "nonus"            |   9th   |   21
 "decimus"          |  10th   |   34
 "undecimus"        |  11th   |   55
 "duodecimus"       |  12th   |   89
 "tertius decimus"  |  13th   |  144
 "quartus decimus"  |  14th   |  233
 "quintus decimus"  |  15th   |  377
 "sextus decimus"   |  16th   |  610
 "septimus decimus" |  17th   |  987
 "duodevicesimus"   |  18th   | 1597
 "undevicesimus"    |  19th   | 2584
 "vicesimus"        |  20th   | 4181

规则

  • 保证输入恰好是上面描述的字符串之一。
  • 如果这有帮助的话,你可以用大写字母代替。但它必须是一致的所有条目。不允许混合案件。
  • 根据您的算法和语言,硬编码或计算序列的术语可能会赢得或丢失字节。这两种方法都是明确允许的。
  • 这是密码-高尔夫
EN

回答 5

Code Golf用户

发布于 2018-08-16 00:06:24

打扫,87字节

除了\n之外,所有转义都被视为一个字节,因为编译器可以使用实际的原始值。(TIO和SE对它不是有效的UTF-8有问题,所以它在这里逃了出来)

FryAmTheEggman做了一个很好的演示/解决方案:这里

代码语言:javascript
运行
复制
import StdEnv
$s=hd[i\\i<-k 1 0&c<-:"\340\152\060\065\071\354\172\045\223\n\255\362\132\137\143\026\244\051\344\270"|c==sum s]
k b a=[a:k(a+b)b]

在网上试试!

定义函数$ :: [Char] -> Int,它使用大写字符值的求和中的唯一性来确定序列中要返回的术语(由辅助函数k生成)。

票数 4
EN

Code Golf用户

发布于 2018-08-16 12:55:14

6502机器代码 (C64),82字节

代码语言:javascript
运行
复制
00 C0 20 9E AD 20 A3 B6 A8 88 A9 05 4A 90 02 49 B1 71 22 88 10 F6 29 1F C9 07
B0 02 69 0D A8 BE 32 C0 B9 1E C0 4C CD BD 00 00 00 00 03 00 0A 00 06 10 01 00
FF 00 02 00 00 00 00 00 08 00 15 0D DB 02 18 90 3D 55 79 05 FF E9 62 22 01 59
01 37 FF 03

这使用散列(当然),但为6502的短实现而优化,利用移位设置的进位标志并附加使用。FF字节是哈希表中不幸的漏洞;)

字节计数:2字节加载地址,38字节代码,42字节哈希表的值。

在线演示

用法:SYS49152"[ordinal]",例如SYS49152"DUODECIMUS"。(请注意,字母在默认的C64配置中显示为大写)。

重要的:在第一个开始之前,发出一个NEW命令。这是必要的,因为C64 BASIC LOAD命令使用一些基本向量,即使在将机器程序加载到某个绝对地址(如这里的$C000/49152)时也是如此。

Commented反汇编

代码语言:javascript
运行
复制
         00 C0                          ; load address
.C:c000  20 9E AD    JSR $AD9E          ; evaluate expression
.C:c003  20 A3 B6    JSR $B6A3          ; evaluate as string
.C:c006  A8          TAY                ; length to y register
.C:c007  88          DEY                ; decrement (start at last char)
.C:c008  A9 05       LDA #$05           ; start value for hash
.C:c00a   .hashloop:
.C:c00a  4A          LSR A              ; shift right
.C:c00b  90 02       BCC .skip          ; shifted bit zero? -> skip xor
.C:c00d  49 B1       EOR #$B1           ; xor "magic" value
.C:c00f   .skip:
.C:c00f  71 22       ADC ($22),Y        ; add current character (plus carry)
.C:c011  88          DEY                ; previous character
.C:c012  10 F6       BPL .hashloop      ; pos >= 0? -> repeat
.C:c014  29 1F       AND #$1F           ; mask lowest 5 bits
.C:c016  C9 07       CMP #$07           ; larger than 7 ?
.C:c018  B0 02       BCS .output        ; -> to output
.C:c01a  69 0D       ADC #$0D           ; add 13
.C:c01c   .output:
.C:c01c  A8          TAY                ; hash to y register
.C:c01d  BE 32 C0    LDX .lb-8,Y        ; load low byte from hashtable
.C:c020  B9 1E C0    LDA .hb-8,Y        ; load high byte from hashtable
.C:c023  4C CD BD    JMP $BDCD          ; to output of 16bit number
.C:c026   .hb:
.C:c026  00 00 00 00 .BYTE $00,$00,$00,$00
.C:c02a  03 00 0A 00 .BYTE $03,$00,$0A,$00
.C:c02e  06 10 01 00 .BYTE $06,$10,$01,$00
.C:c032  FF 00 02 00 .BYTE $FF,$00,$02,$00
.C:c036  00 00 00 00 .BYTE $00,$00,$00,$00
.C:c03a   .lb:
.C:c03a  08 00 15 0D .BYTE $08,$00,$15,$0D  ; second byte used in .hb as well
.C:c03e  DB 02 18 90 .BYTE $DB,$02,$18,$90
.C:c042  3D 55 79 05 .BYTE $3D,$55,$79,$05
.C:c046  FF E9 62 22 .BYTE $FF,$E9,$62,$22
.C:c04a  01 59 01 37 .BYTE $01,$59,$01,$37
.C:c04e  FF 03       .BYTE $FF,$03

C64 BASIC V2测试套件

(包含DATA行中的机器程序)

在线演示

代码语言:javascript
运行
复制
0fOa=49152to49231:rEb:pOa,b:nE
1?"primus",:sY49152"primus":?
2?"secundus",:sY49152"secundus":?
3?"tertius",:sY49152"tertius":?
4?"quartus",:sY49152"quartus":?
5?"quintus",:sY49152"quintus":?
6?"sextus",:sY49152"sextus":?
7?"septimus",:sY49152"septimus":?
8?"octavus",:sY49152"octavus":?
9?"nonus",:sY49152"nonus":?
10?"decimus",:sY49152"decimus":?
11?"undecimus",:sY49152"undecimus":?
12?"duodecimus",:sY49152"duodecimus":?
13?"tertius decimus",:sY49152"tertius decimus":?
14?"quartus decimus",:sY49152"quartus decimus":?
15?"quintus decimus",:sY49152"quintus decimus":?
16?"sextus decimus",:sY49152"sextus decimus":?
17?"septimus decimus",:sY49152"septimus decimus":?
18?"duodevicesimus",:sY49152"duodevicesimus":?
19?"undevicesimus",:sY49152"undevicesimus":?
20?"vicesimus",:sY49152"vicesimus":?
21dA32,158,173,32,163,182,168,136,169,5,74,144,2,73,177,113,34,136,16,246,41,31
22dA201,7,176,2,105,13,168,190,50,192,185,30,192,76,205,189,0,0,0,0,3,0,10,0,6
23dA16,1,0,255,0,2,0,0,0,0,0,8,0,21,13,219,2,24,144,61,85,121,5,255,233,98,34,1
24dA89,1,55,255,3
票数 4
EN

Code Golf用户

发布于 2018-08-18 05:20:37

Perl 6,62字节

代码语言:javascript
运行
复制
{(0,1,*+*...*)[index '%(-1!5+3JOSCW6',chr .ords.sum%93]}

在网上试试!

使用字符串中的查找表以及简短的fibonacci序列生成器。

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

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

复制
相关文章

相似问题

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