选择您自己的语言代码


17

让我们以16x16可打印ASCII字符(代码点0x20至0x7E)为网格。从左上角到右下角有30条选择的15条路径,仅进行正交移动,如以下示例所示:

##..............
.#..............
.######.........
......##........
.......##.......
........#.......
........#.......
........#.......
........###.....
..........###...
............#...
............####
...............#
...............#
...............#

每个此类路径均由31个字符组成。请注意,这些字符中的每个字符在31个对角线中都不同:

0123456789ABCDEF
123456789ABCDEFG
23456789ABCDEFGH
3456789ABCDEFGHI
456789ABCDEFGHIJ
56789ABCDEFGHIJK
6789ABCDEFGHIJKL
789ABCDEFGHIJKLM
89ABCDEFGHIJKLMN
9ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
BCDEFGHIJKLMNOPQ
CDEFGHIJKLMNOPQR
DEFGHIJKLMNOPQRS
EFGHIJKLMNOPQRST
FGHIJKLMNOPQRSTU

这不是示例网格。这是31个对角线的可视化。

如果没有对角线两次包含相同字符,我们将称其为对角线唯一的网格。如果网格具有此属性,则没有两个路径将包含相同的字符串。(只是澄清一下,可视化本身基本上是相反的就是对角线唯一。)

挑战

设计一个对角线唯一的16x16网格,以使尽可能多的路径是有效代码,Jabberwocky并以尽可能多的语言打印到STDOUT(带有可选的尾随换行符)。每个代码可以是完整程序,也可以是没有返回语句的无参数函数的主体(这是为了不阻止需要在某些样板函数/类/命名空间中使用其代码的语言)。

注意:为简单起见,您可以为未使用的单元格使用一些保留字符,例如Ypnypn

对于每个有效路径,请清楚说明其有效的一种编程语言。

获奖者是上述列表中使用的语言数量最多的作品。(或者,对于要计数的每种语言,请显示一种在该语言中有效的路径,但请确保不要对两种语言的任何路径进行计数。)

如果出现平局,请计算没有被任何有效路径覆盖的网格单元。较少的未使用单元会获胜。如果有平局,我将以(净)票最多接受答案。

验证脚本

我只是很快地整理了一个CJam片段,您可以使用它来验证网格对角线唯一。

  1. 转到在线CJam解释器
  2. 粘贴以下代码

    l:A;
    qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
    
  3. 在输入字段中,将保留字符放在第一行(如果不要求使用保留字符,请使用未使用的字符),然后将网格置于2到17行。例如,对于Ypnypn的答案:

    ~
     pr~~~~~~~~~~~~~
     tin~~~~~~~~~~~~
    ~ypt(~~~~~~~~~~~
    ~~ef(~~~~~~~~~~~
    ~~  "J~~~~~~~~~~
    ~~~~~ab~~~~~~~~~
    ~~~~~~be~~~~~~~~
    ~~~~~~~rwo~~~~~~
    ~~~~~~~~~ck~~~~~
    ~~~~~~~~~~y~~~~~
    ~~~~~~~~~~\n~~~~
    ~~~~~~~~~~~")) ~
    ~~~~~~~~~~~  ;  
    ~~~~~~~~~~~~~~~ 
    ~~~~~~~~~~~~~~~ 
    ~~~~~~~~~~~~~~~ 
    
  4. 跑。

让我知道您是否认为它有错误。


6
'Twas brillig,那只狭长的蟾蜍在轮渡上做了回旋和旋转……(是的,我记住了);)
Doorknob

这听起来像是卡尔文爱好的问题之一,这是一个了不起的成就。我仍然无法理解它是如何完成的。
Soham Chowdhury 2014年

Answers:


21

30 33 35语言

保留字符: ~

 println!~~~~~~~
 puts    (1,~~~~
    echo   '~~~~
"cWprintfn"Ja~~~
Eork~~~;'Jabbe~~
\ui)K00~~~~~br~~
]tteL~0~~~~~ew~~
]<~ln(0~~~~~ro~~
`<~~~ 0~~~~~wc~~
m"~~~ "~~~~~ok~~
rJ~~~'J~~~~~cy~~
j"<< "a~~~~~k'..
^~~~~~bberwoy");
f~~~~~~~~~~c'  ;
t~~~~~~~~~~ky"  
XX"););  5f+'); 

语言:

01. Rust        | println! (  "Jabberwocky") ;  |
02. Groovy      | println     "Jabberwocky"     |
03. E           | println  (  "Jabberwocky")    |
04. Swift       | println  (  "Jabberwocky") ;  |
05. Julia       | println  (  "Jabberwocky");;  |
06. Processing  | println  (  "Jabberwocky")  ; |
07. Falcon      | printl   (  "Jabberwocky")    |
08. ALGOL 68    | print    (  "Jabberwocky")    |
09. Vala        | print    (  "Jabberwocky") ;  |
10. Pawn        | print    (  "Jabberwocky");;  |
11. Batsh       | print    (  "Jabberwocky")  ; |
12. freeBASIC   | print       "Jabberwocky"     |
13. Rebol       | print       "Jabberwocky"  ;  |
14. Red         | print       "Jabberwocky"   ; |
15. AWK         | print       'Jabberwocky'     |
16. Perl        | print       'Jabberwocky'  ;  |
17. bc          | print       'Jabberwocky'   ; |
18. Euphoria    |  puts    (1,"Jabberwocky")    |
19. C           |  puts    (  "Jabberwocky") ;  |
20. Tcl         |  puts       "Jabberwocky"     |
21. Ruby        |  puts       'Jabberwocky'     |
22. Zsh         |      echo   "Jabberwocky"     |
23. Bash        |      echo   "Jabberwocky"  ;  |
24. tcsh        |      echo   "Jabberwocky"   ; |
25. PHP         |      echo   'Jabberwocky'     |
26. Fish        |      echo   'Jabberwocky'  ;  |
27. Dash        |      echo   'Jabberwocky'   ; |
28. F#          |      printfn"Jabberwocky"   ; |
29. C++         |    cout<<"J"<< "abberwocky" ; |
30. D           |     Writeln(  'Jabberwocky'); |
31. Pascal      |     WriteLn(  'Jabberwocky'); |
32. Delphi      |     Writeln(  "Jabberwocky"); |
33. GolfScript  |      print;'Jabberwocky'..;;  |
34. CJam        |   "E\]]`mrj^ftXX"););  5f+'); |
35. Pyth        |      pk)K00000"Jabberwocky"   |

(Pyth和CJam感谢user23013)


实际上,haskell代码将带引号的字符串打印出来。要在没有它们的情况下进行打印,您将需要putStr[ln]...。另外,haskell没有;;。我相信您将其与Ocaml混合使用。
骄傲的haskeller 2014年

甚至Ocaml也没有。(如果我输入,在线解释器会给出错误;;)。无论如何,用其他东西代替了Haskell。
Optimizer

Pyth会很容易地添加- | p b"Jabberwocky" |作品,比如
isaacg

@isaacg谢谢!我也打算研究Pyth。这为我节省了时间:)
Optimizer

@isaacg BTW,这样的路径在哪里?
Optimizer

15

17种语言

这是网格,带有.保留字符:

 prin...........
 utstln!........
       (1,......
<?echo    ".....
.........'Jab...
............b...
............e...
............r...
............w...
............o...
............c...
............k...
............y"..
............' ).
.............  ;
..............  

以下是语言及其路径(忽略竖线):

01. Rust        | println!(   "Jabberwocky" ) ; |
02. Swift       | println (   "Jabberwocky" ) ; |
03. Scala       | println (   "Jabberwocky" )   |
04. Falcon      | printl  (   "Jabberwocky" )   |
05. Vala        | print   (   "Jabberwocky" ) ; |
06. Lua         | print   (   'Jabberwocky' ) ; |
07. ALGOL 68    | print   (   "Jabberwocky" )   |
08. Dart        | print   (   'Jabberwocky' )   |
09. Rebol       | print       "Jabberwocky"   ; |
10. Perl        | print       'Jabberwocky'   ; |
11. AWK         | print       "Jabberwocky"     |
12. Euphoria    | puts    (1, "Jabberwocky" )   |
13. C           | puts    (   "Jabberwocky" ) ; |
14. Tcl         | puts        "Jabberwocky"     |
15. Ruby        | puts        'Jabberwocky'     |
16. Bash        |     echo    "Jabberwocky"     |
17. PHP         |     echo    "Jabberwocky"   ; |

我无法测试所有这些,所以请让我知道是否有任何问题。


我认为您不能将相同的路径用于一种以上的语言并将其添加到您的分数中。
Optimizer

1
@Optimizer我认为没有两次使用任何路径。诚然,差异很小。
grc 2014年

1
gh,你这个偷偷摸摸的家伙!:P
Optimizer

对于PHP,删除样板后,`echo“ foobar”`(每次超过1个空格)可以正常打印。没有任何空格。在这里试试吧
优化

2
可以从代码中删除样板,在<?这里
Optimizer

3

18种语言及更多

保留字符:~

         "~~~~~~
12345678 "~~~~~~
12345678 "~~~~~~
12345678 "~~~~~~
1234567: ea~~~~~
1234567: c;~~~~~
1234567: hL~~~~~
1234567: o'~~~~~
1234567:  Jab~~~
1234567:?""""~~~
~~~~~~~~~Jabberw
~~~~~~~~~~~~~~~o
~~~~~~~~~~~~~~~c
~~~~~~~~~~~~~~~k
~~~~~~~~~~~~~~~y
~~~~~~~~~~~~~~~"

语言:

CJam                             |             ea;L'J"abberwocky"|
GolfScript                       |              cho "Jabberwocky"|
Bc                               |                  "Jabberwocky"|
Bash                             |         """"echo J"abberwocky"|
Zsh                              |           ""echo J"abberwocky"|
Fish                             |             echo J"abberwocky"|
Tcsh                             |         """"echo Ja"bberwocky"|
Dash                             |           ""echo Ja"bberwocky"|
Ksh                              |             echo Ja"bberwocky"|
Mksh                             |         """"echo Jab"berwocky"|
Yash                             |           ""echo Jab"berwocky"|
Sash                             |             echo Jab"berwocky"|
Posh                             |         """"echo "Jabberwocky"|
Csh                              |           ""echo "Jabberwocky"|
PHP                              |             echo "Jabberwocky"|

和...

FreeBasic                        |                 ?"Jabberwocky"|
QBasic                           | 12345678        ?"Jabberwocky"|
QB64                             | 123456788       ?"Jabberwocky"|

应该还有更多可以使用的基本方言。但是我还没有时间测试所有这些。


请记住,同一路径不能用于多种语言。因此,并不是所有的BASIC方言会格格不入。
优化

2
@Optimizer至少那些有行号,并不会检查溢出(并有方言?print)应该工作...只需选择一个不同的行号。
jimmy23013 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.