เลือกรหัสภาษาของคุณเอง


17

ลองใช้กริดที่มีอักขระ ASCII ขนาด 16x16 ที่พิมพ์ได้ (รหัสคะแนน 0x20 ถึง 0x7E) มีเส้นทาง 30-select-15 จากด้านบนซ้ายไปที่มุมขวาล่างทำให้มีการเคลื่อนที่แบบมุมฉากเท่านั้นดังตัวอย่างต่อไปนี้:

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

แต่ละเส้นทางดังกล่าวประกอบด้วยอักขระ 31 ตัว โปรดทราบว่าตัวละครเหล่านั้นแต่ละตัวมีความแตกต่างกันในการต่อต้านแนวทแยงมุมทั้ง 31:

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

นี่ไม่ใช่ตารางตัวอย่าง นี่คือการสร้างภาพของการต่อต้านแนวทแยงมุมทั้ง 31

เราจะเรียกว่าตารางแบบเส้นทแยงมุมที่ไม่ซ้ำกันหากไม่มีการต่อต้านเส้นทแยงมุมมีตัวละครเดียวกันสองครั้ง หากกริดมีคุณสมบัตินี้จะไม่มีสองพา ธ ที่มีสตริงเหมือนกัน (เพื่ออธิบายให้ชัดเจนการสร้างภาพข้อมูลนั้นเป็นสิ่งที่ตรงกันข้ามกับเอกลักษณ์ในแนวทแยงมุม)

ความท้าทาย

ออกแบบกริด 16x16 ที่มีเอกลักษณ์ในแนวทแยงมุมเช่นเส้นทางจำนวนมากที่สุดเท่าที่จะเป็นไปได้คือรหัสที่ถูกต้องซึ่งพิมพ์Jabberwockyไปยัง STDOUT (พร้อมตัวแบ่งบรรทัดต่อท้าย) ในภาษาต่างๆให้มากที่สุด แต่ละรหัสอาจเป็นโปรแกรมเต็มรูปแบบหรือเนื้อความของฟังก์ชั่นแบบไม่มีพารามิเตอร์โดยไม่มีคำสั่ง return (นี่คือเพื่อไม่ให้กีดกันภาษาที่จำเป็นต้องมีรหัสในฟังก์ชั่นสำเร็จรูป / คลาส / เนมสเปซ)

หมายเหตุ:เพื่อความง่ายคุณสามารถใช้อักขระที่สงวนไว้สำหรับเซลล์ที่ไม่ได้ใช้อย่างที่ 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 และ toves slithey ทำเสียงกระหึ่มและว่องไวใน wabe ... (ใช่ฉันมีที่จดจำ);)
Doorknob

ฟังดูเหมือนคำถามหนึ่งในงานอดิเรกของ Calvin ซึ่งเป็นความสำเร็จที่ยอดเยี่ยม ฉันยังคงไม่สามารถเข้าใจว่ามันเสร็จสิ้นแล้ว
Soham Chowdhury

คำตอบ:


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 ต้องขอบคุณผู้ใช้ 23013)


ที่จริงแล้วรหัส haskell จะพิมพ์สตริงด้วยเครื่องหมายคำพูด putStr[ln]...หากต้องการพิมพ์ได้โดยไม่ต้องให้พวกเขาคุณจะต้อง นอกจากนี้ Haskell ;;ไม่ได้ ฉันเชื่อว่าคุณผสมกับ Ocaml
ภูมิใจ haskeller

แม้แต่ Ocaml ก็ไม่มีสิ่งนั้น (ล่ามออนไลน์ให้ข้อผิดพลาดถ้าฉันใส่;;) อย่างไรก็ตามแทนที่ Haskell ด้วยสิ่งอื่น
เครื่องมือเพิ่มประสิทธิภาพ

Pyth จะเพิ่มง่าย - | p b"Jabberwocky" |ตัวอย่างเช่น
isaacg

@isaacg ขอบคุณ! ฉันกำลังจะดู Pyth ด้วย สิ่งนี้ช่วยฉันประหยัดเวลา :)
เครื่องมือเพิ่มประสิทธิภาพ

@isaacg BTW เส้นทางนั้นอยู่ที่ไหน?
เครื่องมือเพิ่มประสิทธิภาพ

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"   ; |

ฉันไม่สามารถทดสอบทั้งหมดได้ดังนั้นให้ฉันรู้ว่ามีบางอย่างไม่ทำงาน


ฉันคิดว่าคุณไม่สามารถใช้เส้นทางเดียวกันได้มากกว่าหนึ่งภาษาและเพิ่มลงในคะแนนของคุณ
เครื่องมือเพิ่มประสิทธิภาพ

1
@Optimizer ฉันไม่คิดว่าจะมีเส้นทางที่ใช้สองครั้ง เป็นที่ยอมรับความแตกต่างนั้นค่อนข้างเล็ก
grc

1
เอ่อคุณส่อเสียดคน! : P
เครื่องมือเพิ่มประสิทธิภาพ

สำหรับ PHP หลังจากลบต้นแบบสำเร็จรูปแล้ว `echo" foobar "` (มากกว่า 1 ที่ว่างในแต่ละครั้ง) พิมพ์ได้ดี ไม่มีช่องว่างสีขาว ลองใช้ที่นี่
เครื่องมือเพิ่มประสิทธิภาพ

2
ไม่เป็นไรที่จะลบต้นแบบจากรหัสซึ่งอยู่<?ที่นี่
เครื่องมือเพิ่มประสิทธิภาพ

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"|

ควรมีภาษาพื้นฐานเพิ่มเติมอีกมากมายที่ใช้งานได้ แต่ฉันยังไม่มีเวลาที่จะทดสอบพวกเขาทั้งหมด


จำไว้ว่าคุณไม่สามารถใช้พา ธ เดียวกันได้มากกว่า 1 ภาษา ดังนั้นภาษาพื้นฐานทั้งหมดจะไม่พอดี
เครื่องมือเพิ่มประสิทธิภาพ

2
@Optimizer อย่างน้อยภาษาเหล่านั้นซึ่งมีหมายเลขบรรทัดและไม่ได้ตรวจสอบล้น (และมี?สำหรับprint) ควรจะทำงาน ... เพียงแค่เลือกจำนวนเส้นที่แตกต่างกัน
jimmy23013
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.