Chọn mã ngôn ngữ của riêng bạn


17

Chúng ta hãy lấy một lưới gồm 16 ký tự ASCII có thể in 16x16 (mã điểm 0x20 đến 0x7E). Có 30 đường dẫn chọn 15 từ góc trên bên trái đến góc dưới bên phải, chỉ thực hiện các bước di chuyển trực giao, như ví dụ sau:

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

Mỗi đường dẫn như vậy bao gồm chính xác 31 ký tự. Lưu ý rằng mỗi ký tự đó nằm trên một trong số 31 đường chéo khác nhau:

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

Đây không phải là một lưới ví dụ. Đây là một hình ảnh của 31 đường chéo.

Chúng ta sẽ gọi một lưới theo đường chéo duy nhất nếu không có đường chéo nào chứa cùng một ký tự hai lần. Nếu lưới có thuộc tính này, không có hai đường dẫn sẽ chứa cùng một chuỗi. (Chỉ cần làm rõ, bản thân hình dung về cơ bản là đối lập với đường chéo độc đáo.)

Các thách thức

Thiết kế lưới 16x16 độc đáo theo đường chéo, sao cho càng nhiều đường dẫn càng tốt là mã hợp lệ in Jabberwockyra STDOUT (với ngắt dòng tùy chọn) bằng càng nhiều ngôn ngữ càng tốt. Mỗi mã có thể là một chương trình đầy đủ hoặc phần thân của hàm không tham số mà không có câu lệnh return (điều này là để không làm nản lòng các ngôn ngữ cần có mã của chúng trong một số hàm / lớp / không gian tên).

Lưu ý: Để đơn giản, bạn có thể sử dụng một số ký tự dành riêng cho các ô không sử dụng như Ypnypn đã làm.

Đối với mỗi đường dẫn hợp lệ, vui lòng nêu rõ một ngôn ngữ lập trình mà nó hợp lệ.

Người chiến thắng là bài nộp với số lượng ngôn ngữ lớn nhất được liệt kê trong danh sách trên. (Ngoài ra, đối với mỗi ngôn ngữ bạn muốn đếm, hãy hiển thị một đường dẫn hợp lệ trong ngôn ngữ đó, nhưng đảm bảo không đếm bất kỳ đường dẫn nào cho hai ngôn ngữ.)

Trong trường hợp hòa, đếm các ô lưới không được bao phủ bởi bất kỳ đường dẫn hợp lệ nào. Ít tế bào không sử dụng chiến thắng. Nếu vẫn còn một sự ràng buộc, tôi sẽ chấp nhận câu trả lời với số phiếu (mạng) nhiều nhất.

Tập lệnh xác nhận

Tôi chỉ nhanh chóng kết hợp một đoạn nhỏ của CJam mà bạn có thể sử dụng để xác thực rằng một lưới là duy nhất theo đường chéo.

  1. Chuyển đến trình thông dịch trực tuyến của CJam .
  2. Dán đoạn mã sau

    l:A;
    qN/W%A16**33/z{A-__|=}%:*"D""Not d"?"iagonally unique"
    
  3. Trong trường đầu vào, đặt ký tự dành riêng của bạn lên dòng đầu tiên (sử dụng ký tự không được sử dụng nếu bạn không khởi kiện ký tự dành riêng), rồi lưới của bạn ở dòng 2 đến 17. Ví dụ: cho câu trả lời của Ypnypn:

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

Hãy cho tôi biết nếu bạn nghĩ rằng nó có một lỗi.


6
'Twas brillig, và các slithey đã làm gyre và gimble trong wabe ... (vâng, tôi đã ghi nhớ điều đó);)
Doorknob

Điều này nghe có vẻ như một trong những câu hỏi của Sở thích của Calvin, đó là một thành tích tuyệt vời. Tôi vẫn chưa thể hiểu nó đã được thực hiện như thế nào.
Soham Chowdhury

Câu trả lời:


21

30 33 35 Ngôn ngữ

Nhân vật dành riêng: ~

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

Ngôn ngữ:

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 và CJam nhờ người dùng23013)


Trên thực tế, mã haskell in chuỗi có dấu ngoặc kép. Để in nó mà không có họ, bạn sẽ cần putStr[ln].... Ngoài ra, haskell không có ;;. Tôi tin rằng bạn đã trộn nó với Ocaml.
tự hào

Ngay cả Ocaml cũng không có điều đó. (Trình thông dịch trực tuyến đưa ra lỗi nếu tôi đặt ;;). Dù sao, thay thế Haskell bằng một cái gì đó khác.
Trình tối ưu hóa

Pyth sẽ dễ dàng thêm - | p b"Jabberwocky" |ví dụ: công trình
isaacg

@isaacg Cảm ơn! Tôi cũng sẽ nhìn vào Pyth. Điều này giúp tôi tiết kiệm thời gian :)
Trình tối ưu hóa

@isaacg BTW, con đường như vậy ở đâu?
Trình tối ưu hóa

15

17 ngôn ngữ

Đây là lưới, với .ký tự dành riêng:

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

Và đây là ngôn ngữ và đường dẫn của chúng (bỏ qua các thanh dọc):

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

Tôi chưa thể kiểm tra tất cả chúng, vì vậy hãy cho tôi biết nếu có thứ gì đó không hoạt động.


Tôi nghĩ rằng bạn không thể sử dụng cùng một đường dẫn cho nhiều ngôn ngữ và thêm nó vào điểm số của bạn.
Trình tối ưu hóa

1
@Optimizer Tôi không nghĩ có bất kỳ đường dẫn nào được sử dụng hai lần. Phải thừa nhận rằng, sự khác biệt là khá nhỏ.
grc

1
Ugh, anh chàng lén lút! : P
Trình tối ưu hóa

Đối với PHP, sau khi gỡ bỏ bản soạn sẵn, `echo" foobar "` (hơn 1 khoảng trống mỗi lần) chỉ in tốt. Không có bất kỳ khoảng trắng. Dùng thử tại đây
Trình tối ưu hóa

2
Bạn có thể gỡ bỏ bản tóm tắt khỏi mã, <?ở đây
Trình tối ưu hóa

3

18 ngôn ngữ trở lên

Nhân vật dành riêng : ~.

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

Ngôn ngữ:

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

và ...

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

Cần có nhiều phương ngữ cơ bản hơn hoạt động. Nhưng tôi chưa có thời gian để kiểm tra tất cả chúng.


Hãy nhớ rằng bạn không thể sử dụng cùng một đường dẫn cho hơn 1 ngôn ngữ. Vì vậy, không phải tất cả các phương ngữ BASIC sẽ phù hợp.
Trình tối ưu hóa

2
@Optimizer Ít nhất những tiếng địa phương có số dòng và không kiểm tra tràn (và có ?cho print) nên làm việc ... Chỉ cần chọn một số dòng khác nhau.
jimmy23013
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.