कई कार्यक्रम Quinecatenate!


22

आपका काम तीन अलग-अलग भाषाओं A, B, C को देना है और दो अलग-अलग प्रोग्राम P और Q लिखना है जैसे:

P भाषा A में एक क्वीन है, लेकिन B और C में से एक क्वीन नहीं है;

क्यू भाषा बी में एक क्वीन है, लेकिन ए और न ही सी में क्वीन नहीं; तथा

P के बाद सम्‍मिलित Q (बिना किसी नए वर्ण के बीच में जोड़े हुए) भाषा C में एक क्वीन है, लेकिन B में नहीं और न ही A में।

यह कोडगॉल्फ है, जहां आपका स्कोर अंतिम, संक्षिप्त क्वीन की लंबाई है। फिर, उचित quines के नियमों का पालन करें - अपने स्रोत कोड को नहीं पढ़ना, कोई खाली कार्यक्रम आदि नहीं।


2
टिप्पणियों पर नियम?
एडिसन क्रम्प

यह कुछ ऐसा है जो मैंने पहले नहीं सोचा था। मैं उन्हें स्लाइड करने के लिए इच्छुक हूं क्योंकि तब आपको उस मुद्रण के बारे में चिंता करनी होगी और यह सुनिश्चित करना होगा कि भाषा C में एक ही टिप्पणी वाक्यविन्यास या कुछ है, लेकिन मैं लचीला हूं।
फराज मसरूर

क्या "एक क्वीन" का अर्थ "कुछ भी नहीं करना" या "कम से कम चलाना" है?
लीजियनममाल 978

1
जब एक संकलक में रखा जाता है तो यह अपने स्रोत कोड का उत्पादन नहीं करता है। यह एक त्रुटि को चला या फेंक सकता है या कुछ और या कुछ संकलित या आउटपुट नहीं कर सकता है, लेकिन जब तक यह अपने स्रोत कोड को आउटपुट नहीं करता है।
फराज मसरूर 19

जवाबों:


11

विखंडन + CJam + GolfScript, 38 36 बाइट्स

विखंडन , 6 बाइट्स

'!+OR"

यह मार्टिन बंटनर के विखंडन में से एक हैइसे ऑनलाइन आज़माएं!

सीजेएम, 30 बाइट्स

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

आखिरी बाइट एक लाइनफीड है। इसे ऑनलाइन आज़माएं!

गोल्फस्क्रिप्ट, 36 बाइट्स

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

आखिरी बाइट एक लाइनफीड है। इसे ऑनलाइन आज़माएं!

सत्यापन

$ 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

यह काम किस प्रकार करता है

विखंडन

  • R एक परमाणु को घुमाता है जो दाएं चलता है, किनारे पर चारों ओर लपेटता है।

  • "टॉगल प्रिंटिंग मोड। अगले तक सब कुछ "छपा हुआ है।

  • '! परमाणु को '!' के कोड बिंदु पर सेट करता है।

  • +परमाणु के द्रव्यमान को बढ़ाता है, इसे कोड बिंदु पर सेट करता है "

  • O उस चरित्र को प्रिंट करता है जिसका कोड बिंदु परमाणु का द्रव्यमान है और परमाणु को नष्ट कर देता है।

CJam

'       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.

एक और डेनिस मिला!
फराज मसरूर '

8

सेल्फ-मॉडिफ़ाइंग ब्रेनफ़क + गोल्फस्क्रिप्ट + सीजाम, 29 27 बाइट्स

स्व-संशोधित ब्रेनफक , 12 बाइट्स

 {<[<]>[.>]}

अग्रणी स्थान पर ध्यान दें। इसे ऑनलाइन आज़माएं!

GolfScript, 15 बाइट्स

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

आखिरी बाइट एक लाइनफीड है। इसे ऑनलाइन आज़माएं!

सीजेएम, 27 बाइट्स

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

अग्रणी स्थान पर ध्यान दें। आखिरी बाइट एक लाइनफीड है। इसे ऑनलाइन आज़माएं!

सत्यापन

$ 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

यह काम किस प्रकार करता है

स्व-संशोधित ब्रेनफक

SMBF डेटा पॉइंटर के बाईं ओर अपने सोर्स कोड से शुरू होता है।

<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 बाइट्स

अच्छी तरह से गोल्फ नहीं।

Tcl , 60 बाइट्स

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

इस पृष्ठ पर क्वीन के आधार पर । इसमें एक अनुगामी न्यूलाइन है।

सीजेएम, 26 बाइट्स

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

इसमें एक अनुगामी न्यूलाइन है।

गोल्फस्क्रिप्ट, 86 बाइट्स

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

यह कैसे काम करता है? मैंने कभी नहीं सुना है
फराज मसरूर

TF में @FarazMasroor स्ट्रिंग्स को ब्रेसिज़ से घेरा जा सकता है, और कमांड के नाम भी स्ट्रिंग्स हैं। और ब्रेसिज़ की चीज़ों को गोल्फस्क्रिप्ट में ब्लॉक माना जाता है, जिसे मुद्रित किया जा सकता है। CJam गोल्फस्क्रिप्ट के समान है, लेकिन एक भाषा में एक क्वीन बनाने के लिए पर्याप्त अलग है जो दूसरे में काम नहीं करता है। भाषाओं के इन विकल्पों के साथ, ये सही प्रारूप में आउटपुट के लिए कुछ अतिरिक्त कोड के साथ सिर्फ सामान्य quines हैं, जो अभी तक गोल्फ नहीं है।
jimmy23013

3

शेपस्क्रिप्ट + सीजेएम + गोल्फस्क्रिप्ट, 96 95 62 बाइट्स

ShapeScript , 16 बाइट्स

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

यह मानक शेपस्क्रिप्ट क्वीन हैइसे ऑनलाइन आज़माएं!

सीजेएम, 46 बाइट्स

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

आखिरी बाइट एक लाइनफीड है। इसे ऑनलाइन आज़माएं!

गोल्फस्क्रिप्ट, 62 बाइट्स

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

आखिरी बाइट एक लाइनफीड है। इस पर ऑनलाइन प्रयास करें वेब गोल्फस्क्रिप्ट आज़माएं

सत्यापन

$ 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

यह काम किस प्रकार करता है

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.

CJam

];      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
मैंने खुद को एक जंगली डेनिस पाया!
फ़राज़ मसरूर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.