Виберіть свій код мови


17

Візьмемо сітку з 16х16 друкованих символів ASCII (кодові точки від 0x20 до 0x7E). З верхнього лівого до правого нижнього кута є 30 шляхів вибору-15, роблячи лише ортогональні ходи, як у наведеному нижче прикладі:

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

Кожен такий шлях складається рівно з 31 символу. Зауважте, що кожен із цих символів має різні 31 діагоналі:

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

Це не приклад сітки. Це візуалізація 31 діагоналі.

Ми будемо називати сітку діагонально унікальною, якщо жодна антидіагональ не містить одного і того ж символу двічі. Якщо сітка має це властивість, жоден два контури не будуть містити однакового рядка. (Просто для уточнення, сама візуалізація в основному протилежна діагоналі унікальної.)

Змагання

Створіть діагонально унікальну сітку 16х16 таким чином, щоб якомога більше шляхів було дійсним кодом, який друкує 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 брилінг, і щілинні дзвінки зробилися і погризаються у wabe ... (так, я це запам'ятав);)
Doorknob

Це звучить як одне із запитань Хобі Кальвіна, це фантастичне досягнення. Я досі не зміг зрозуміти, як це робиться.
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

Навіть у Окамля цього немає. (Інтернет-перекладач видає помилку, якщо я ставлю ;;). У будь-якому разі замінив 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
Добре зняти котельну плиту з коду, який є <?тут
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"|

Повинні бути ще багато основних діалектів, які працюють. Але я ще не встигаю перевірити їх усіх.


Пам’ятайте, що ви не можете використовувати той самий шлях для більш ніж 1 мови. Тому не всі базові діалекти підходять.
Оптимізатор

2
@Optimizer Принаймні ті діалекти, які мають номери рядків і не перевіряють переповнення (і мають ?для print), повинні працювати ... Просто виберіть інший номер рядка.
jimmy23013
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.