Kendi Dilinizi Seçin Kodu


17

16x16 yazdırılabilir ASCII karakterden oluşan bir ızgara alalım (kod noktaları 0x20 ila 0x7E). Sol üst köşeden sağ alt köşeye doğru 30 seçim-15 yolu vardır ve aşağıdaki örnekte olduğu gibi yalnızca dikey hareketler yapar:

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

Bu yolların her biri tam olarak 31 karakterden oluşur. Bu karakterlerin her birinin 31 anti-çaprazdan farklı olduğunu unutmayın:

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

Bu bir örnek ızgara değildir. Bu 31 anti-köşegenin bir görselleştirmesidir.

Aynı karakteri iki kez çapraz karakter içermiyorsa , ızgarayı benzersiz olarak adlandırırız . Izgara bu özelliğe sahipse, iki yol aynı dizeyi içermez. (Sadece görselleştirme kendisi temelde netleştirmek için ters çapraz eşsiz.)

Meydan okuma

Mümkün olduğunca Jabberwockyçok dilde STDOUT'a (isteğe bağlı son satır sonu ile) yazdırılan geçerli kod olacak şekilde çapraz olarak benzersiz bir 16x16 ızgara tasarlayın . Her kod ya tam bir program ya da return deyimi olmadan parametresiz bir fonksiyonun gövdesi olabilir (bu, bazı kazan plakası işlevinde / sınıfında / ad alanında kodları olması gereken dilleri caydırmak için değildir ).

Not: Basitlik için Ypnypn gibi kullanılmayan hücreler için ayrılmış bir karakter kullanabilirsiniz .

Her geçerli yol için lütfen geçerli olduğu bir programlama dilini açıkça belirtin .

Kazanan, yukarıdaki listenin kapsadığı en fazla sayıda dile sahip olan gönderidir. (Alternatif olarak, saymak istediğiniz her dil için, o dilde geçerli olan bir yol gösterin, ancak iki dil için herhangi bir yol saymadığınızdan emin olun.)

Eşitlik halinde, olan ızgara hücreleri saymak değil herhangi bir geçerli yolu ile kaplı. Daha az kullanılmayan hücre kazanır. Hala varsa bir beraberlik , cevabı en (net) oyla kabul edeceğim.

Doğrulama Komut Dosyası

Bir ızgaranın çapraz olarak benzersiz olduğunu doğrulamak için kullanabileceğiniz küçük bir CJam snippet'ini hızlı bir şekilde bir araya getirdim.

  1. Git çevrimiçi CJam tercüman .
  2. Aşağıdaki kodu yapıştırın

    l:A;
    qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
    
  3. Girdi alanında, ilk satıra ayrılmış karakter koyun (ayrılmış bir karakterden dava açmazsanız kullanılmayan bir karakter kullanın) ve ardından ızgarayı 2'den 17'ye kadar olan satırda kullanın. Örneğin, Ypnypn'in cevabı için:

    ~
     pr~~~~~~~~~~~~~
     tin~~~~~~~~~~~~
    ~ypt(~~~~~~~~~~~
    ~~ef(~~~~~~~~~~~
    ~~  "J~~~~~~~~~~
    ~~~~~ab~~~~~~~~~
    ~~~~~~be~~~~~~~~
    ~~~~~~~rwo~~~~~~
    ~~~~~~~~~ck~~~~~
    ~~~~~~~~~~y~~~~~
    ~~~~~~~~~~\n~~~~
    ~~~~~~~~~~~")) ~
    ~~~~~~~~~~~  ;  
    ~~~~~~~~~~~~~~~ 
    ~~~~~~~~~~~~~~~ 
    ~~~~~~~~~~~~~~~ 
    
  4. Çalıştırmak.

Bir hata olduğunu düşünüyorsanız bana bildirin.


6
'Twas brillig ve slithey toves cehennemde gyre ve gimble yaptı ... (evet, bunu ezberledim);)
Kapı tokmağı

Bu Calvin'in Hobileri'nin sorularından birine benziyor, ki bu harika bir başarı. Hala nasıl yapıldığını anlayamadım.
Soham Chowdhury

Yanıtlar:


21

30 33 35 Diller

Ayrılmış karakter: ~

 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+'); 

Diller:

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

(Kullanıcı23013 sayesinde Pyth ve CJam)


Aslında, haskell kodu dizeyi tırnak işaretleri ile yazdırır. Onlarsız yazdırmak için ihtiyacınız olacak putStr[ln].... Ayrıca, haskell de yok ;;. Ocaml ile karıştırdığına inanıyorum.
gururlu haskeller

Ocaml bile buna sahip değil. (Çevrimiçi yorumlayıcı koyarsam hata verir ;;). Her neyse, Haskell'i başka bir şeyle değiştirdi.
Doktor

Pyth eklemek kolay olurdu - | p b"Jabberwocky" |örneğin, çalışır
isaacg

@isaacg Teşekkürler! Ben de Pyth'e bakacaktım. Bu bana zaman kazandırıyor :)
Optimizer

@isaacg BTW, böyle bir yol nerede?
Doktor

15

17 dil

.Ayrılmış karakter olarak ızgara :

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

İşte diller ve yolları (dikey çubukları yoksayın):

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

Hepsini test edemedim, bu yüzden bir şeyin işe yaramadığını bana bildirin.


Aynı yolu birden fazla dil için kullanamaz ve puanınıza ekleyemezsiniz.
Optimizer

1
@Optimizer İki kez kullanılan herhangi bir yol olduğunu düşünmüyorum. Kuşkusuz, farklar oldukça küçük.
grc

1
Ugh, sinsi adam! : P
Doktor

PHP için, kazan plakasını çıkardıktan sonra `echo" foobar "` (her seferinde 1'den fazla boşluk) gayet iyi yazdırır. Beyaz boşluk olmadan. Burada deneyin
Optimizer

2
Burada kullanılan koddan boilerplate kaldırmak için sorun <?yok
Optimizer

3

18 dil ve daha fazlası

Rezerve karakteri: ~.

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

Diller:

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

ve...

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

Çalışan çok daha fazla Temel lehçe olmalıdır . Ama henüz hepsini test etmek için vaktim yok.


Aynı yolu 1'den fazla dil için kullanamayacağınızı unutmayın. Böylece tüm BASIC lehçeleri sığmayacaktır.
Optimizer

2
@Optimizer En azından satır numaraları olan ve taşmayı kontrol etmeyen (ve olması ?gereken print) lehçelerin çalışması gerekir ... Sadece farklı bir hat numarası seçin.
jimmy23013
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.