Nhiều chương trình Quinecatenate!


22

Nhiệm vụ của bạn là đưa ra ba ngôn ngữ A, B, C khác nhau và viết hai chương trình P và Q khác nhau sao cho:

P là một quine trong ngôn ngữ A, nhưng không phải là một quine trong B cũng như C;

Q là một quine trong ngôn ngữ B, nhưng không phải là một quine trong A cũng như C; và

Q nối sau P (không có bất kỳ ký tự mới nào được thêm vào giữa) là một câu hỏi trong ngôn ngữ C, nhưng không phải ở B cũng không phải A.

Đây là codegolf, trong đó điểm số của bạn là độ dài của câu hỏi cuối cùng, kết hợp. Một lần nữa, hãy tuân thủ các quy tắc của các câu hỏi thích hợp - không đọc mã nguồn của bạn, không có chương trình trống, v.v.


2
Quy định về ý kiến?
Addison Crump

Đó là điều mà trước đây tôi không nghĩ đến. Tôi có xu hướng để chúng trượt vì sau đó bạn phải lo lắng về việc in ra đó VÀ phải đảm bảo ngôn ngữ C có cùng cú pháp nhận xét hoặc một cái gì đó nhưng tôi linh hoạt.
Faraz Masroor 7/11/2015

"Không phải là một quine" có nghĩa là "làm bất cứ điều gì" hoặc "ít nhất là chạy"?
LegionMammal978

1
Khi đưa vào một trình biên dịch, nó không xuất mã nguồn của nó. Nó có thể chạy hoặc ném lỗi hoặc không biên dịch hoặc xuất ra thứ gì khác hoặc không có gì, nhưng miễn là nó không xuất mã nguồn của nó.
Faraz Masroor 7/11/2015

Câu trả lời:


11

Phân hạch + CJam + GolfScript, 38 36 byte

Phân hạch , 6 byte

'!+OR"

Đây là một trong những quy tắc phân hạch của Martin Büttner . Hãy thử trực tuyến!

CJam, 30 byte

' {"''"@*" "+YX#<
\"0$~"N}0$~

Byte cuối cùng là một nguồn cấp dữ liệu. Hãy thử trực tuyến!

GolfScript, 36 byte

'!+OR"' {"''"@*" "+YX#<
\"0$~"N}0$~

Byte cuối cùng là một nguồn cấp dữ liệu. Hãy thử trực tuyến!

xác minh

$ wc -c P Q
 6 P
30 Q
36 total
$ cat P Q > P+Q
$ 
$ Fission P 2>&- | diff -qs - P
Files - and P are identical
$ cjam P 2>&- | diff -qs - P
Files - and P differ
$ golfscript P 2>&- | diff -qs - P
Files - and P differ
$ 
$ cjam Q 2>&- | diff -qs - Q
Files - and Q are identical
$ golfscript Q 2>&- | diff -qs - Q
Files - and Q differ
$ Fission Q 2>&- | diff -qs - Q
Files - and Q differ
$ 
$ golfscript P+Q 2>&- | diff -qs - P+Q
Files - and P+Q are identical
$ Fission P+Q 2>&- | diff -qs - P+Q
Files - and P+Q differ
$ cjam P+Q 2>&- | diff -qs - P+Q
Files - and P+Q differ

Làm thế nào nó hoạt động

Phân hạch

  • R sinh ra một nguyên tử di chuyển sang phải, quấn quanh rìa.

  • "bật chế độ in. Tất cả mọi thứ cho đến tiếp theo "được in.

  • '! đặt nguyên tử thành điểm mã của '!'.

  • +tăng khối lượng của nguyên tử, đặt nó vào điểm mã của ".

  • O in ký tự có điểm mã là khối lượng của nguyên tử và phá hủy nguyên tử.

Camam

'       e# Push a space character.
{       e# Push the following code block:
  "''"  e# Push that string.
  @*    e# Separate its characters by spaces.
  " "+  e# Append one more space.
  YX#   e# Raise 2 to the first power. Pushes 2.
  <     e# Discard all but the first two characters of the string, i.e., "' ".
  \     e# Swap the string "' " with the code block in execution.
  "0$~" e# Push that string.
  N     e# Push a linefeed.
}       e#
0$~     e# Push a copy of the code block and execute it.

GolfScript

'!+OR"' # Push that string.
{       # Push the following code block:
  "''"  # Push that string.
  @*    # Join its characters, separating them by the first string.
  " "+  # Append a space.
  YX    # Undefined token. Does nothing.
  #<    # Comment.
  \     # Swap the string with the code block in execution.
  "0$~" # Push that string.
  N     # Undefined token. Does nothing.
}       #
0$~     # Push a copy of the code block and execute it.

Tìm thấy một Dennis khác!
Faraz Masroor

8

Tự sửa đổi Brainfuck + GolfScript + CJam, 29 27 byte

Brainfuck tự sửa đổi , 12 byte

 {<[<]>[.>]}

Lưu ý không gian hàng đầu. Hãy thử trực tuyến!

GolfScript, 15 byte

{So"0$~"N]}0$~

Byte cuối cùng là một nguồn cấp dữ liệu. Hãy thử trực tuyến!.

CJam, 27 byte

 {<[<]>[.>]}{So"0$~"N]}0$~

Lưu ý không gian hàng đầu. Byte cuối cùng là một nguồn cấp dữ liệu. Hãy thử trực tuyến!

xác minh

$ wc -c P Q
12 P
15 Q
27 total
$ cat P Q > P+Q
$ 
$ timeout 10 smbf P | diff -sq - P
Files - and P are identical
$ golfscript P | diff -sq - P
Files - and P differ
$ cjam P | diff -sq - P
Files - and P differ
$ 
$ golfscript Q | diff -sq - Q
Files - and Q are identical
$ cjam Q | diff -sq - Q
Files - and Q differ
$ timeout 10 smbf Q | diff -sq - Q
Terminated
$ 
$ cjam P+Q | diff -sq - P+Q
Files - and P+Q are identical
$ golfscript P+Q | diff -sq - P+Q
Files - and P+Q differ
$ timeout 10 smbf P+Q | diff -sq - P+Q
Terminated

Làm thế nào nó hoạt động

Brainfuck tự sửa đổi

SMBF bắt đầu với mã nguồn ở bên trái con trỏ dữ liệu.

<space>        (ignored)
{              (ignored)
<              Move the data pointer left.
[<]            Move the data pointer left to the next null byte.
>              Move the data pointer right.
[.>]           Print and move the data pointer right until null byte.
}              (ignored)

GolfScript

{            # Push the following code block:
  So         # Undefined token. Does nothing.
  "0$~"      # Push that string.
  N          # Undefined token. Does nothing.
  ]          # Wrap the stack in a array. Does not affect output.
}            #
0$~          # Push a copy of the code block and execute it.


### CJam

{<[<]>[.>]} e# Push that code block.
{           e# Push the following code block:
  So        e# Print a space. Since it is printed explicitly,
            e# it will appear at the beginning of the output.
  "0$~"     e# Push that string.
  N         e# Push a linefeed.
  ]         e# Wrap the stack in a array. Does not affect output.
            e# This makes the program an infinite, empty  loop
            e# in SMBF; it would be a quine otherwise.
}           e#
0$~         e# Push a copy of the code block and execute it.

5

Tcl, CJam, GolfScript, 60 + 26 = 86 112 byte

Không chơi golf tốt.

Tcl , 60 byte

{puts} [{join} {{} \{ \}\]} {{puts} [{join} {{} \{ \}\]} }]

Dựa trên quine trên trang này . Nó có một dòng mới.

CJam, 26 byte

{"' '@`+n@0"L~;"0$~"N}0$~

Nó có một dòng mới.

GolfScript, 86 byte

{puts} [{join} {{} \{ \}\]} {{puts} [{join} {{} \{ \}\]} }]
{"' '@`+n@0"L~;"0$~"N}0$~

Cái này hoạt động ra sao? Tôi chưa bao giờ nghe nói về tcl
Faraz Masroor 7/11/2015

Chuỗi @FarazMasroor trong Tcl có thể được bao quanh bởi dấu ngoặc nhọn và tên lệnh cũng là chuỗi. Và những thứ trong dấu ngoặc nhọn được coi là các khối trong GolfScript, có thể được in như hiện tại. CJam tương tự như GolfScript nhưng đủ khác nhau để tạo ra một câu hỏi trong một ngôn ngữ không hoạt động trong ngôn ngữ khác. Với những lựa chọn ngôn ngữ này, đây chỉ là những câu hỏi bình thường với một số mã bổ sung để xuất ra ở định dạng phù hợp, chưa được đánh gôn.
jimmy23013

3

ShapeScript + CJam + GolfScript, 96 95 62 byte

ShapeScript , 16 byte

'"%r"@%"0?!"'0?!

Đây là tiêu chuẩn ShapeScript . Hãy thử trực tuyến!

CJam, 46 byte

];{"'\"%r\"@%\"0?!\"'0?!];"SS#~(>
\"0$~"N}0$~

Byte cuối cùng là một nguồn cấp dữ liệu. Hãy thử trực tuyến!

GolfScript, 62 byte

'"%r"@%"0?!"'0?!];{"'\"%r\"@%\"0?!\"'0?!];"SS#~(>
\"0$~"N}0$~

Byte cuối cùng là một nguồn cấp dữ liệu. Dùng thử trực tuyến trên Web GolfScript .

xác minh

$ wc -c P Q
16 P
46 Q
62 total
$ cat P Q > P+Q
$ 
$ shapescript P 2>&- | diff -qs - P
Files - and P are identical
$ cjam P 2>&- | diff -qs - P
Files - and P differ
$ golfscript P 2>&- | diff -qs - P
Files - and P differ
$ 
$ cjam Q 2>&- | diff -qs - Q
Files - and Q are identical
$ golfscript Q 2>&- | diff -qs - Q
Files - and Q differ
$ shapescript Q 2>&- | diff -qs - Q
Files - and Q differ
$ 
$ golfscript P+Q 2>&- | diff -qs - P+Q
Files - and P+Q are identical
$ shapescript P+Q 2>&- | diff -qs - P+Q
Files - and P+Q differ
$ cjam P+Q 2>&- | diff -qs - P+Q
Files - and P+Q differ

Làm thế nào nó hoạt động

ShapeScript

'       Push a string that, when evaluated, does the following.
  "%r"  Push this formatting string. %r gets replaced by a string
        representation of the corresponding argument.
  @     Swap the string that is being evaluated on top of the stack.
  %     Apply formatting to the string on top of the stack.
  "0?!" Push that string.
'
0?!     Push a copy of the previous string and evaluate it.

Camam

];      e# Clear the stack. Stack is already clear. Does nothing.
{       e# Push the following code block:

  "'\"%r\"@%\"0?!\"'0?!];"

  SS#   e# Find the index of " " in " ". Pushes 0.
  ~(    e# Apply logical NOT and decrement. Pushes -2.
  >     e# Discard all but the two rightmost characters from the string,
        e# i.e., reduce it to "];".
  \     e# Swap the string "];" with the code block in execution.
  "0$~" e# Push that string.
  N     e# Push a linefeed.
}       e#
0$~     e# Push a copy of the code block and execute it.

GolfScript

'"%r"@%"0?!"'

0?!     # Find the index of the number 0 in the string and apply logical NOT.
];      # Clear the stack.
{       # Push the following code block:

  "'\"%r\"@%\"0?!\"'0?!];"

  SS    # Undefined token. Does nothing.
  #~(>  # Comment.
  \     # Swap the string with the code block in execution.
  "0$~" # Push that string.
  N     # Undefined token. Does nothing.
}       #
0$~     # Push a copy of the code block and execute it.

2
Tôi thấy mình là một Dennis hoang dã!
Faraz Masroor
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.