আপনি কতবার একটি কুইন গল্ফ করতে হবে?


12

এই চ্যালেঞ্জের জন্য, আপনাকে অবশ্যই একটি প্রোগ্রাম তৈরি করতে হবে যা একটি পূর্ণসংখ্যার গ্রহণ করে xএবং এর উত্সকে xবহুবার আউটপুট করে ।

বিধি

  • এটি কোডগল্ফ, লক্ষ্যটি হ'ল কমপক্ষে বাইটের জন্য আপনার প্রোগ্রামটি গল্ফ করা

  • যদি আপনি কোনও ফাংশন জমা দেন তবে ফাংশনটি অবশ্যই xপ্যারামিটার হিসাবে গ্রহণ করবে এবং হয় হয় আপনার কোডের সম্পূর্ণতাটি xঅনেকবার স্টাডিআউটে প্রিন্ট করে বা মুদ্রণ করে । ফাংশন বডিটি অবশ্যই খালি হবে না

  • যদি আপনি একটি ল্যাম্বদা জমা দেন তবে এটির আপনাকে ভেরিয়েবলের জন্য নির্ধারণ করা প্রয়োজন হয় না

  • স্ট্যান্ডার্ড লুফোলের বিধিনিষেধগুলি প্রযোজ্য।

  • খালি প্রোগ্রাম নিষিদ্ধ

  • আপনার প্রোগ্রামটি কেবল তখনই কাজ করতে হয় যখন xসম্পূর্ণ পূর্ণসংখ্যা 0 এর চেয়ে বড় বা সমান হয়

  • আপনার প্রোগ্রামটি সরাসরি তার উত্স কোডের কোনও অংশই পড়তে পারে না


চমৎকার প্রথম প্রশ্ন
বাল্ড বান্থা

হতে xপারে 0, বা আমরা এটি ইতিবাচক পূর্ণসংখ্যার মধ্যে সীমাবদ্ধ করতে পারি?
mbomb007

আমাদের ফাংশনের উত্স পড়ার অনুমতি আছে?
শেগি

@ এমবিম্ব ২০০7, আমি বিধিগুলি স্পষ্ট করতে একটি সম্পাদনা করেছি, xসম্ভবত কোনও সম্পূর্ণ পূর্ণসংখ্য 0 এর চেয়ে বড় বা তার সমান
ডাইগনিসিমাস -

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

উত্তর:


8

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

ট্রেলিং কমা এবং নিউলাইন নোট করুন।

s='s=%r;print s%%s*input(),\n';print s%s*input(),

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


@ mbomb007 ধরে নিন কোডের শেষে একটি নতুন লাইন রয়েছে। সমস্যা সমাধান.
এমডি এক্সএফ

ওপি বলেছিল যে x শূন্য হতে পারে, এক্ষেত্রে কিছুই প্রিন্ট করা উচিত নয়, সুতরাং এই উত্তরটি ভুল।
mbomb007

@ নিকা না, এটি একটি নতুন লাইন প্রিন্ট করে, যা ভুল।
mbomb007

0 আমার কাছে কোনও নতুন লাইন মুদ্রণ করছে বলে মনে হচ্ছে না, sys.stdout.write("2")এটির পরে ব্যবহার করে পরীক্ষিত ।
janর্জন জোহানসেন


4

আরপিগ্রন 2 , 8 বাইট

{`{.*¶}{

RProgN2 লুপ কুইন এটির জন্য বিশেষত ভাল কাজ করে!

{     } # A function literal
       {# Without a matching }, this loops back to the second instruction, which essentially runs the function. This is a bug, but it works to make the "Looping Quine".
 `{.    # Append the literal {, stringifying the function.
    *   # Multiply the stringified function by the input.
     ¶  # Terminate the program.

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


4

গণিত, 40 33 বাইট

7 বাইট সংরক্ষণের জন্য ল্যানলক 4কে ধন্যবাদ!

StringRepeat[ToString[#0], #1] & 

একটি nonnegative পূর্ণসংখ্যার যুক্তি নিয়ে খাঁটি ফাংশন। ToString[#0]বর্তমান খাঁটি ফাংশনটির সংজ্ঞা অ্যাক্সেস করার মানক গণিত উপায়; StringRepeat[..., #1]একসাথে সেই স্ট্রিংয়ের অনুলিপি (ইনপুট)। উদাহরণ স্বরূপ,

StringRepeat[ToString[#0], #1] & [2]

উৎপাদনের:

StringRepeat[ToString[#0], #1] & StringRepeat[ToString[#0], #1] & 

আপনি কি ব্যবহারের উদাহরণ পোস্ট করতে পারেন? দৌড়ানো, যেমন , StringJoin @@ Table[ToString[#0], #1] & [2]আমাকে একটি ত্রুটি দেয়।
জুলিয়ান ওল্ফ

সত্যি? এই সঠিক কলটি আমার পক্ষে কাজ করে। আমি গণিত 11 ব্যবহার করছি ....
গ্রেগ মার্টিন

হুম, আমি এখনও 10 (v10.0.1.0) ব্যবহার করছি - এটি হতে পারে। রেফারেন্সের জন্য, আমি পেয়েছি যে ত্রুটি এখানে:Table::itform: Argument 2 at position 2 does not have the correct form for an iterator.
জুলিয়ান ওল্ফ

আহা — আমি আবিষ্কার করেছি যে ম্যাথমেটিকা ​​10.2 এবং তার বাইরেও Table[x,5]ফিরে আসবে {x,x,x,x,x}, তবে ম্যাথমেটিকা ​​10.1 এ এটি এমন ত্রুটি দেয় (এটি প্রত্যাশা করে Table[x,{5}])।
গ্রেগ মার্টিন

আমার মনে হয় আপনি প্রতিস্থাপন করতে পারেন StringJoin @@ Tableসঙ্গে StringRepeat
গাছ নয়



3

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

এই সমাধান যদি কাজ করে x=0। একটি একক ট্রেলিং নিউলাইন রয়েছে।

s='s=%r;exec"print%%r;"%%(s%%s)*input()';exec"print%r;"%(s%s)*input()

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


পাইথন 2, 60 বাইট (অবৈধ)

এটি ধরে নেওয়া হয় x>=1, তবে ওপি xশূন্য হতে পারে তা স্পষ্ট করে দেয় । একটি একক ট্রেলিং নিউলাইন রয়েছে।

s='s=%r;print(s%%s*input())[:-1]\n';print(s%s*input())[:-1]

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


2

আন্ডারলোড , 12 বাইট

(a(:^)*~^):^

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

ফাংশন জমা, কারণ আন্ডারলোডের ইনপুট নেওয়ার কোনও উপায় নেই। (টিআইও লিঙ্কটি ইনপুট হিসাবে প্রদত্ত 4 নম্বরটি দেখায় এবং ফলাফলটি আউটপুট প্রিন্ট করতে কোড যুক্ত করে)।

এটি কেবল সর্বজনীন কুইন নির্মাতা (a(:^)*):^, প্লাস ~^("যুক্তির সমান সংখ্যক অনুলিপি তৈরি করুন")।



1

জেলি , 10 বাইট

“;⁾vṾẋɠ”vṾ

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

কিভাবে এটা কাজ করে

“;⁾vṾẋɠ”vṾ  Main link. No arguments.

“;⁾vṾẋɠ”    Set the argument and the return value to the string ';⁾vṾẋɠ'.
         Ṿ  Uneval; yield '“;⁾vṾẋɠ”'.
        v   Eval ';⁾vṾẋɠ' with argument '“;⁾vṾẋɠ”'.
  ⁾vṾ           Yield 'vṾ'.
 ;              Concatenate '“;⁾vṾẋɠ”' and 'vṾ', yielding the source code.
      ɠ         Read an integer from STDIN.
     ẋ          Repeat the source code that many times.

4
এটি দেখতে সুস্বাদু, তবে আমার মামা সবসময় আমাকে বলেছিলেন যে অদ্ভুত চেহারাওয়ালা জিনিসগুলি আমার মুখে .ুকিয়ে দেবেন না।
মতিন উলহাক

1

জিএনইউ মেক , 49 বাইট

$(foreach ,$(shell seq $1),$(strip $(value $0))) 

মেকগুলি একটি একক স্পেস দ্বারা অনুলিপিগুলিতে যোগদান করবে, সুতরাং শেষের দিকে অতিরিক্ত স্পেস ক্যারেক্টারটি অন্তর্ভুক্ত stripকরতে হবে এবং বিশ্বস্ততার সাথে প্রয়োজনীয়তাটি অনুসরণ করার জন্য এটির মধ্যে একটি দিয়ে সরিয়ে ফেলতে হবে ।


দেখে মনে হচ্ছে এটি উত্স কোডটি পড়ে যা ডিফল্টভাবে এবং স্পষ্টতই নিষিদ্ধ forbidden
janrjan জোহানসেন

@ আরজানজোহানসেন না, এটি উত্সটি পড়ে না, এটি একটি পরিবর্তনশীল মান পড়ে। এটি অন্যান্য উত্তরের মতো ঠিক একই নীতি, উদাহরণস্বরূপ জেএস বা পাইথন ধরুন।
eush77

@ Janর্জনজহানসেন ওহ, আমি দেখছি। $0মেক ফাংশনগুলি শেলের মতো একই জিনিস নয়। এটি ভেরিয়েবলের নাম হিসাবে ফাংশন হিসাবে ডাকা হয়। Gnu.org/savannah-checkouts/gnu/make/manual/html_node/…
eush77

এমন একটি ধূসর অঞ্চল দীর্ঘশ্বাস ফেলুন । বিটিডাব্লু, পাইথনগুলি এটি করে না
janrjan জোহানসেন

@ আরজান জোহানসেন আমি বলব যে জেএসের চেয়ে এই উত্তর পাইথনের চেয়ে অনেক বেশি কাছাকাছি। সমস্তই callপ্রতিস্থাপন করছে $0এবং $1প্রকৃত প্যারামিটার সহ - এটি পাইথনের মতোই সাধারণ স্ট্রিং ইন্টারপোলেশন %
eush77


1

বেতালোড , 203 বাইট

স্পষ্টতার জন্য নিউলাইনগুলি যুক্ত হয়েছে:

(a(:^)*(!()):#(}:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*{)>(0)(!()){:^}(1)(){:^}(2)(:*){:^}(
3)(::**){:^}(4)(:*:*){:^}(5)(::*:**){:^}(6)(:*::**){:^}(7)(::*::***){:^}(8)(:*:*:*){:^}(9)(
::**::**){:^}R^^S):^

আমি নিজেকে এই সীমাবদ্ধতা দিয়েছিলাম যে এটি অবশ্যই স্ট্যান্ডের উপরের থেকে আন্ডারলোড উত্তরের মতো স্ট্যাকের উপরের থেকে পড়তে হবে। আমি যথাযথ, দশমিক ইনপুটও ব্যবহার করি যা বেশিরভাগ কোড তৈরি করে।

ব্যাখ্যা:

আমি প্রোগ্রামটি একটি কুইন-মোড়কে জড়িয়ে রাখি: (a(:^)*এবং ):^। এর অর্থ কাইন র‌্যাপারের সমস্ত কোডের স্ট্যাকের নীচে প্রোগ্রামের উত্স কোড থাকবে have

অঙ্কগুলিকে একটি সাধারণ চার্চের সংখ্যায় রূপান্তর করতে, আমি কোডটি দিয়ে প্রতিটি সংখ্যা প্রতিস্থাপনের কৌশলটি 10 ​​দ্বারা গুণ করে এবং সেই সংখ্যাটি যুক্ত করি:

0 -> (::*:**:*)*
1 -> (::*:**:*)*(:)~*(*)*
2 -> (::*:**:*)*(::)~*(**)*
3 -> (::*:**:*)*(:::)~*(***)*

এখানে প্রচুর পুনরাবৃত্তি রয়েছে, সুতরাং আসুন এটি একটি উপ-প্রোগ্রামে প্যাকেজ করি যা স্ট্যাকের শীর্ষ থেকে একটি চার্চ অঙ্ক নেবে এবং এটি "অঙ্কের স্ট্রিং:" তৈরি করতে ব্যবহার করবে

:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*

আমি এটিকে একটি নতুন পরিবেশে রেখেছি যাতে এটি দ্রুত প্রবেশ করা যায়:

#(}:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*{)>

এখন আমি এর জন্য প্রতিস্থাপন কোড তৈরি করতে পারি RRস্টুডের শীর্ষ উপাদানগুলিকে বেতালয়েড কোডের সাথে এসটিডিআইএন থেকে একটি স্ট্রিং প্রতিস্থাপন করতে একটি সন্ধানের টেবিল তৈরি করতে ব্যবহার করে। এটি এর মতো কাজ করে:

()
(0)(code for 0)
(1)(code for 1)
(2)(code for 2)
...
R

যাইহোক, আমরা কোড বিভাগগুলি উত্পন্ন করতে আমরা তৈরি করা সাবপ্রগ্রামটি ব্যবহার করতে পারি:

(0)(!()){:^}
(1)(){:^}
(2)(:*){:^}
(3)(::**){:^}
...

কখন Rচালানো হবে, এটি ইনপুটটিকে উপ-প্রোগ্রামগুলির একটি সিরিজে রূপান্তর করবে যা একটি চার্চ সংখ্যা তৈরি করে। যখন এই সাবপ্রগ্রামটি কার্যকর করা হয়, তখন এটি স্ট্যাকের পরবর্তী উপাদানগুলিতে চার্চের অঙ্ক তৈরি করে (0, যা আগে নীচে স্থাপন করা হয়েছিল)। এর অর্থ এই যে, পরে R^, স্ট্যাকের শীর্ষ মানটি চার্চ সংখ্যা হবে ume এরপরে আমরা ^আর একবার সময় উত্তর পেতে স্ট্যাকের (প্রোগ্রামের উত্স কোড) চূড়ান্ত উপাদানটিতে চার্চ অঙ্ক প্রয়োগ করতে।

মজাদার ঘটনা: আমি বেশ কয়েক মাস ধরে এই জমা দেওয়ার এমডি পেয়েছি। কোনও প্রশ্নের ভুল বোঝার পরে আমি এটি রেখে দিয়েছি (যে আমি আর খুঁজে পাব না)। এটি এখানে পোস্ট করতে আমার রিসাইকেল বিন থেকে এটি খনন করতে হয়েছিল।



1

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

_="input('_=%r;exec _'%_*input())";exec _

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

inputপরিবর্তে একটি কিন্ডা হ্যাক আউটপুট ব্যবহার করে print, যেহেতু printএকটি নিউলাইন মুদ্রণের সাথে জড়িত একটি অদ্ভুত বাগ রয়েছে না ... অনুমিত হয় না । একটি EOF ত্রুটি সহ প্রস্থান করে।

ব্যাখ্যা:

_="input('_=%r;exec _'%_*input())"; # Set _ to a string
exec _                              # Execute that string
input(                        )     # "print"
      '_=%r;exec _'%_               # The source code with _ formatted in
                     *input()       # Actual input many times



0

পার্ল, 48 বাইট

print"$_\47"x(2*pop)for'print"$_\47"x(2*pop)for'

\47একটি একক উদ্ধৃতি ( ') এর জন্য অষ্টাল পালাবার । এটি ডাবল উদ্ধৃতিতে ব্যাখ্যা করা হয় (" ) এর হলেও একক উদ্ধৃতিতে নয়।


0

জাভাস্ক্রিপ্ট ES6, 27 37 বাইট

_=>alert(`${f.name}=${f}`.repeat(_))

সম্পাদন করা

+10 বাইটগুলিও f=প্রদর্শন করা উচিত


f=

_=>alert(`${f.name}=${f}`.repeat(_))

f(2);


@ডাউনভোটার কেন?
উইডোজ

কাইদো আমি জানি না .. আমার কি রাখা উচিত f=?
উইডোজ

আপনার কোডটি ফাংশনটিতে স্পষ্টভাবে কল toStringকরে নিজেই পড়ছে ।
আইবাবিস

@acbabis কলিং f.toString()বা fএটি একই তবে এটি ফাংশনটির নামটি প্রদর্শন করবে না
উইডোজেজ

আমি বিশ্বাস করি যে @acbabis এর অর্থ হ'ল এটি চ্যালেঞ্জটির শেষ পয়েন্টটি লঙ্ঘন করে "আপনার প্রোগ্রামটি সরাসরি এর উত্স কোডের কোনও অংশই সরাসরি পড়তে পারে না" - সেই উপায়টি ব্যবহার করে fএটি তার নিজস্ব উত্সকে উল্লেখ করছে।
skyline3000

0

সিজেম , 20 12 বাইট

মার্টিন ইন্ডারকে ধন্যবাদ 8 টি বাইট

{"_~"+ri*}_~

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

Exaplanation

{       e# Begin a block literal:
 "_~"+  e#  Add whatever's on the stack to the beginning of the array ['_', '~'].
 ri*    e#  Repeat the resulting array a number of times equal to the input.
}       e# Close the block. Push it on the stack.
_~      e# Copy it and run it.



0

মাইক্রোস্ক্রিপ্ট দ্বিতীয়, 22 বাইট:

"v{lqp}sN*h"v{lqp}sN*h

মাইক্রোসক্রিপ্ট II, 20 বাইট (তবে প্রযুক্তিগতভাবে এটি অবৈধ হিসাবে এটি কোনও কোড ব্লকের উত্স কোডটি অ্যাক্সেস করে):

{s""+`"~sN*"s`+}~sN*


0

পাইথন 3, 69 বাইট

s='s=%r\nx=int(input())\nprint(s%%s*x)\n'
x=int(input())
print(s%s*x)


0

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

0"D34çý×?"D34çý×?

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

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

ব্যাখ্যা:

0                   # Push 0 to the stack
                    #  STACK: [0]
 "D34çý×?"          # Push the string 'D34çý×?' to the stack
                    #  STACK: [0, 'D34çý×?']
          D         # Duplicate this string
                    #  STACK: [0, 'D34çý×?', 'D34çý×?']
           34ç      # Push '"' to the stack
                    #  STACK: [0, 'D34çý×?', 'D34çý×?', '"']
              ý     # Join the stack by this '"' delimiter
                    #  STACK: ['0"D34çý×?"D34çý×?']
               ×    # Repeat the string the (implicit) input amount of times
                    #  input = 2 → STACK: ['0"D34çý×?"D34çý×?0"D34çý×?"D34çý×?']
                ?   # Output to STDOUT without trailing newline
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.