কুইন / বিপরীত কুইন


26

একটি সম্পূর্ণ প্রোগ্রাম লিখুন যা বুলিয়ান বা অ-নেতিবাচক পূর্ণসংখ্যার ইনপুট নেয়। এটা অবশ্যই:

  • যদি ইনপুট মানটি মিথ্যা হয় তবে তার নিজস্ব উত্স কোড আউটপুট করুন
  • যদি ইনপুট মানটি সত্য হয় তবে বিপরীতে তার নিজস্ব উত্স কোড আউটপুট করুন

আপনার প্রোগ্রামটি প্যালেন্ড্রোমিক হতে পারে না, বা এটি কোনও উপায়ে নিজস্ব উত্স কোডও পড়তে পারে না।

এটি কোড গল্ফ - বাইট জেতে সংক্ষিপ্ততম কোড।


6
সুতরাং ... যদি আমার ভাষায় বুলেট থাকে না। তবে 0 টি মিথ্যা এবং ইতিবাচক পূর্ণসংখ্যা সত্য y আমি কি ধরে নিতে পারি যে ইনপুটটি কেবল 0 বা 1 হবে (বুলিয়ানদের স্ট্যান্ড-ইন হিসাবে - আসলে ভাষাটি সর্বদা শর্তসাপেক্ষ অপারেটরের ফলস্বরূপ সেই দুটির মধ্যে একটির উত্পন্ন করবে)? বা আমার কোনও পূর্ণসংখ্যার সমর্থন করতে হবে, যেহেতু আমি "প্রকৃত" বুলিয়ান ব্যবহার করতে পারি না?
মার্টিন ইন্ডার

উত্তর:


9

গোল> <> , 9 বাইট

'rd3*I?rH

আমি ইতিমধ্যে এটি <<> ভিটসি এবং মিনকোল্যাংয়ের উত্তরগুলি পেয়েছি বলে এটি পোস্ট করে কিছুটা বিশ্রী লাগছে। স্ট্যান্ডার্ড কুইনে কেবলমাত্র সংযোজনগুলি হ'ল I(পূর্ণসংখ্যার ইনপুট পড়ুন), ?(সত্যবাদী হলে পরবর্তী সম্পাদন করুন) এবং r(বিপরীত স্ট্যাক)।

এটি অনলাইনে চেষ্টা করুন


ক্লাবে যোগদান কর! : ডি আপনি যেভাবেই জিতছেন। +1
এডিসন ক্রম্প

1
8 বাইট:sP#Hr?I"
জো কিং

18

সিজেম, 17 16 বাইট

{`"_~"+Wq~g#%}_~

এটি এখানে পরীক্ষা করুন।

স্ট্যান্ডার্ড কুইনের মোটামুটি সোজা-ফরোয়ার্ড পরিবর্তন। 17 বাইট জন্য অন্যান্য সমাধান:

{`"_~"+q~{W%}&}_~
{`"_~"+q~!2*(%}_~

যদি আমি ধরে নিতে পারি যে ইনপুটটি কেবল 0 বা 1 (বুলিয়ানের জন্য স্ট্যান্ড-ইন হিসাবে, যা সিজেএম-তে কোনও ডেডিকেটেড টাইপ নেই), আমি বাদ দিয়ে 15 পেয়েছি g:

{`"_~"+Wq~#%}_~

ব্যাখ্যা

{`"_~"+  e# Standard generalised quine framework. Leaves the source code on the stack. 
  W      e# Push a -1.
  q~     e# Read and evaluate input.
  g      e# signum, turning truthy values into 1 (leaving 0 unchanged).
  #      e# Power. -1^0 == 1, -1^1 == -1.
  %      e# Select every Nth element: a no-op for 1 and reverses the string for -1.
}_~

যেহেতু 0 এবং 1 CJam এর Booleans, আমি আপনি প্রয়োজন মনে করি না g
ডেনিস

@ ডেনিস হ্যাঁ আমি এটি সম্পর্কে সত্যই নিশ্চিত নই।
মার্টিন ইন্ডার

আশ্চর্যজনকভাবে, আমি কোনওভাবে এটি মারলাম। ওও যদি আপনি আরও গল্ফ করেন তবে আমি অবাক হব না। : ডি
অ্যাডিসন ক্রম্প 21

9

পাইথ, 17 বাইট

_WQjN*2]"_WQjN*2]

স্ট্যান্ডার্ড পাইথ কুইনের একটি সোজা পরিবর্তন।


অভি, আমি স্যান্ডবক্স তৈরি হওয়ার এক ঘন্টা পর থেকে এটি পোস্ট করার জন্য অপেক্ষা করছিলাম।
15'50 এ lirtosiast

7

> <>, 17 বাইট

স্ট্যাকের উপর ইনপুট ঠেলাতে (বা আপনাকে অনলাইনে ইন্টারপ্রেটারে স্ট্যাকের আগে ইনপুট দেওয়ার জন্য) -v পতাকাটি (+1 বাইট) প্রয়োজন।

'rd3*$?rol?!;70.

আপনি যদি পূর্ণসংখ্যার ইনপুটগুলি কেবলমাত্র (যেমন মিথ্যার জন্য 0, সত্যের জন্য 1) মঞ্জুরি দেওয়া হয় তবে একই পরিমাণ বাইটের জন্য (পতাকা ছাড়াই) আপনি নীচেটি করতে পারেন।

'rd3*ic%?rol?!;80.

এটি অনলাইনে চেষ্টা করুন

> <> এর জন্য সত্যবাদী / মিথ্যাচার যথাক্রমে 0 এবং 0 নয়।


6

Vitsy , 15 বাইট

... আমি ... আমি সিজেমকে মারছি! ( চেঁচিয়ে ) মা! দেখো, মা, আমি এটা করলাম!

'Rd3 * i86 * -) আরএল \ হে

ব্যাখ্যা:

'Rd3 * i86 * - (আরএল \ হে
স্ট্যান্ডার্ড কুইন, তবে একটি পাক দিয়ে:

'উত্স কোডটি স্ট্রিং হিসাবে ক্যাপচার করুন
 rd3 * ASCII তে 'অক্ষর তৈরি করুন
     i86 * - ASCII হিসাবে ইনপুট চরিত্রটি পান তারপরে এটি থেকে 48 বিয়োগ করুন। 
                    যদি এটি শূন্য হয় তবে এটি যদি বিবৃতিটি পরবর্তী নির্দেশনা ছেড়ে যায়।
          (r যদি স্ট্যাকের শীর্ষ আইটেমটি শূন্য হয়, তবে পরবর্তী আইটেমটি করবেন না।
                    এখানে পরবর্তী আইটেমটি বিপরীত।
            l \ হে স্ট্যাকটি মুদ্রণ করুন।

ভিট্টির নতুন সংস্করণ , 11 বাইট

v'rd3 *} উ) rZ
v ইনপুটটি ভেরিয়েবল হিসাবে ক্যাপচার করুন।
 'অন্যটির মুখোমুখি হওয়া অবধি উত্সটি ক্যাপচার করুন'
  স্ট্যাক বিপরীত।
   d3 স্ট্যাকের দিকে ধাক্কা।
      Ack স্ট্যাকটি ডানদিকে ঘোরান।
       v) ভেরিয়েবলটি (ইনপুট) স্ট্যাকের দিকে ঠেলাও এবং শূন্য না হলে পরীক্ষা করুন।
         r যদি তাই হয় তবে স্ট্যাকটি বিপরীত করুন।
          স্ট্যাকের সব কিছুই আউটপুট করুন।

2

জাভাস্ক্রিপ্ট (ES6), 42 বাইট

$=_=>'$='+(_?$:[...''+$].reverse().join``)

এটি আমার ব্লিং কুইনের একটি পরিবর্তন । এটিও দ্বিগুণ দীর্ঘ।


এটি কি আসলে কিছু আউটপুট দেয়? কেবলমাত্র একটি REPL এ কাজ করার উত্তরগুলি অনুমোদিত নয়।
ফেডারাম

1
@Etproductions যে ফাংশন কল করবে, কিন্তু এটি এখনও কিছু মুদ্রণ করবে না। এছাড়াও, এটি আর কুইন হবে না।
ডেনিস

@ ডেনিস রাইট ঠিক আছে, আমি অনুমান করি যে এর অর্থটি prompt()প্রয়োজনীয়, যদি না আমরা নোড.জেএস তে স্যুইচ করি unless আমি বিশ্বাস করি $=_=>(A=`$=${$};$(prompt())`,alert(_?A:[...A].reverse().join``));$(prompt())সঠিকভাবে কাজ করে, যদিও এটি আরও নিচে নামতে পারে।
ইটিএইচ প্রডাকশনস

1
"আপনার প্রোগ্রামটি [...] কোনওভাবেই এর নিজস্ব উত্স কোডটি পড়তে পারে না" " এই সমাধান কি এই বিভাগে পড়ে?
ETH প্রোডাকশনগুলি

2

বার্লেস্ক, 40 বাইট

ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh

ব্যাখ্যা:

বার্লেস্কের বিল্ট-ইনগুলি উন্নত স্ট্যাক এবং কোড ম্যানিপুলেশন রয়েছে। আসলে, আপনি প্রোগ্রামটির উত্স কোডটি অ্যাক্সেস করতে পারবেন না তবে ভবিষ্যতে কার্যকর করার জন্য অবশিষ্ট কোডটি অ্যাক্সেস করতে পারবেন। এর অর্থ এই #Qকোডটি অনুসরণ করে সমস্ত কোড ফেরত দেবে যার কারণেই আমরা সেই কোডটিতে সমস্ত কিছু যুক্ত করতে হবে যা আমরা #Qযা করছি তার দ্বারা ri#Q

blsq ) #Q1 2++
12 -- this is the result of 1 2++
{1 2 ++} -- this is the result of #Q

++1 2এটি স্ট্যাক ভিত্তিক প্রযুক্তিগতভাবে অবৈধ কোড। তবে কোডটি এটিকে কার্যকর করার জন্য আমরা কারসাজি করতে পারি 1 2++:

blsq ) #Q<-#q++1 2 
12

এই বিল্ট-ইনগুলির সাথে কাজ করা অবিশ্বাস্যরূপে জটিল এবং কেউই তাদেরকে কুইন সম্পর্কিত জিনিসগুলি ব্যতীত উত্পাদনমূলক কোনও কিছুর জন্য ব্যবহার করেন নি। আপনি যদি বিপরীত হন তবে ++1 2তা পাবেন 2 1++যা উত্পাদন করবে 21এবং না 12। উপরের কোডটি উত্পন্ন করার কারণটিও অন্তর্ভুক্ত রয়েছে 12কারণ শেষ পর্যন্ত আমরা ঠিক ছাড়া অনেকগুলি সম্পাদন করি : পি। আমরা নির্বাহ শেষ যা উত্পাদন করে ।#Q<-2 1++2 1++#q<-12

আমরা আসলে আমাদের কোডের জিনিসগুলিকে প্রতিস্থাপন করতে পারি উদাহরণস্বরূপ এই কোডটি ?+নিজের সাথে সমস্ত উপস্থিতিকে প্রতিস্থাপন করে?*

blsq ) #Q(?+)(?*)r~5.-#q5 5?+
25

ব্যবহার:

$ echo "1" | blsq --stdin 'ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh'
hs fi sp "-<" j +. /\ "Q#ir" -~ HS 2Q#ir
$ echo "0" | blsq --stdin 'ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh'
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh

2

হাস্কেল, 126 118 108 বাইট

main=readLn>>=putStr.([t,reverse t]!!);t=s++show s;s="main=readLn>>=putStr.([t,reverse t]!!);t=s++show s;s="

প্রত্যাশা 0বা 1ইনপুট হিসাবে।


2

মিনকোল্যাং 0.10 , 13 বাইট

"66*2-n,?r$O.

এখানে চেষ্টা করুন।

এটি ঠিক এই চারটি অক্ষর ছাড়া মান quine মত হল: n,?rnইনপুট থেকে একটি পূর্ণসংখ্যা লাগে, ,inverts এটা, তাই ?অগ্রাহ্য rযদি ইনপুট truthy হয়। অন্যথায়, rস্ট্যাকটি বিপরীত করে যাতে এটি বিপরীত ক্রমে আউটপুট হয়।


1
আমার গর্জন চলে গেছে। : সি
অ্যাডিসন ক্রম্প 21

2

পাইথন 2, 51 বাইট

s="print('s=%r;exec s'%s)[::1-2*0**input()]";exec s

0

জাভা 10 (সম্পূর্ণ প্রোগ্রাম), 282 বাইট

interface N{static void main(String[]a){var s="interface N{static void main(String[]a){var s=%c%s%1$c;s=s.format(s,34,s);System.out.print(new Boolean(a[0])?new StringBuffer(s).reverse():s);}}";s=s.format(s,34,s);System.out.print(new Boolean(a[0])?new StringBuffer(s).reverse():s);}}

এটি অনলাইনে চেষ্টা করুন।

জাভা 10 (ল্যাম্বদা ফাংশন হিসাবে), 154 বাইট

b->{var s="b->{var s=%c%s%1$c;s=s.format(s,34,s);return b?new StringBuffer(s).reverse():s;}";s=s.format(s,34,s);return b?new StringBuffer(s).reverse():s;}

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

interface N{                          // Class
  static void main(String[]a){        //  Mandatory main-method
    var s="interface N{static void main(String[]a){var s=%c%s%1$c;s=s.format(s,34,s);System.out.print(new Boolean(a[0])?new StringBuffer(s).reverse():s);}}";
                                      //   Unformatted source code
    s=s.format(s,34,s);               //   Format the source code (the quine-String)
    System.out.print(                 //   Print:
      new Boolean(a[0])?              //    If the input is true:
       new StringBuffer(s).reverse()  //     Print the quine-String reversed
      :                               //    Else:
       s);}}                          //     Print the quine-String as is

ব্যাখ্যা:

  • var sঅবিন্যস্ত সোর্স কোড রয়েছে
  • %s এই স্ট্রিংটি নিজের মধ্যে রাখার জন্য ব্যবহৃত হয় s.format(...)
  • %c, %1$cএবং 34ডাবল-কোট ফর্ম্যাট করতে ব্যবহৃত হয়
  • s.format(s,34,s) সব একসাথে রাখে

এবং তারপরে new StringBuffer(s).reverse()ইনপুট-বুলিয়ানের উপর ভিত্তি করে কুইন-স্ট্রিংটি বিপরীতে ব্যবহৃত হয়।


0

05 এ বি 1 ই , 21 বাইট

0"D34çý‚sè"D34çý‚sè

এটি অনলাইনে চেষ্টা করুন।

যোগ করে ডিফল্ট পরিবর্তন ।0"D34çý"D34çý‚sè

ব্যাখ্যা:

0                        # Push 0 to the stack
                         #  STACK: [0]
 "D34çý‚sè"             # Push the string 'D34çý‚sè' to the stack
                         #  STACK: [0, 'D34çý‚sè']
            D            # Duplicate this string
                         #  STACK: [0, 'D34çý‚sè', 'D34çý‚sè']
             34ç         # Push '"' to the stack
                         #  STACK: [0, 'D34çý‚sè', 'D34çý‚sè', '"']
                ý        # Join the stack with '"' delimiter
                         #  STACK: ['0"D34çý‚sè"D34çý‚sè']
                 Â       # Bifurcate (short for Duplicate & Reverse)
                         #  STACK: ['0"D34çý‚sè"D34çý‚sè', 'ès‚Âýç43D"ès‚Âýç43D"0']
                        # Pair them up:
                         #  STACK: [['0"D34çý‚sè"D34çý‚sè','ès‚Âýç43D"ès‚Âýç43D"0']]
                   s     # Swap to get the boolean input (0 or 1)
                         #  STACK: [['0"D34çý‚sè"D34çý‚sè','ès‚Âýç43D"ès‚Âýç43D"0'], 1]
                    è    # Index the input into the list
                         #  STACK: ['ès‚Âýç43D"ès‚Âýç43D"0']
                         # (Output the top of the stack implicitly)

পিএস: স্বয়ংক্রিয়ভাবে একটি পেছনের নতুন লাইন প্রিন্ট করে। এটিরও যদি বিপরীত হওয়া উচিত তবে তার পরিবর্তে এটি 23 বাইট রয়েছে:

0"D34çý‚sè?"D34çý‚sè?

এটি অনলাইনে চেষ্টা করুন। ( নতুন লাইন ছাড়াই? একটি স্পষ্ট প্রিন্ট )

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.