সিয়ারপিনস্কিফাইড কোড


47

পাঠ্যের একটি আয়তক্ষেত্রাকার ব্লক লিখুন যে যখন সিয়েরপিনস্কি কার্পেটে সাজানো হয় , খালি অংশগুলির জন্য একই আকারের ফাঁকা স্থান ব্যবহার করে এমন একটি প্রোগ্রাম তৈরি করা হয় যা কার্পেটের পুনরাবৃত্তির সংখ্যাকে ছাড়িয়ে যায়।

উদাহরণস্বরূপ, যদি আপনার পাঠ্য ব্লক হয়

TXT
BLK

তারপরে প্রোগ্রাম চালাচ্ছি

TXTTXTTXT
BLKBLKBLK
TXT   TXT
BLK   BLK
TXTTXTTXT
BLKBLKBLK

আউটপুট করা উচিত 1কারণ প্রোগ্রামটির আকারটি সিয়েরপিনস্কি কার্পেটের প্রথম পুনরাবৃত্তির প্রতিনিধিত্ব করে।

একইভাবে, চলমান

TXTTXTTXTTXTTXTTXTTXTTXTTXT
BLKBLKBLKBLKBLKBLKBLKBLKBLK
TXT   TXTTXT   TXTTXT   TXT
BLK   BLKBLK   BLKBLK   BLK
TXTTXTTXTTXTTXTTXTTXTTXTTXT
BLKBLKBLKBLKBLKBLKBLKBLKBLK
TXTTXTTXT         TXTTXTTXT
BLKBLKBLK         BLKBLKBLK
TXT   TXT         TXT   TXT
BLK   BLK         BLK   BLK
TXTTXTTXT         TXTTXTTXT
BLKBLKBLK         BLKBLKBLK
TXTTXTTXTTXTTXTTXTTXTTXTTXT
BLKBLKBLKBLKBLKBLKBLKBLKBLK
TXT   TXTTXT   TXTTXT   TXT
BLK   BLKBLK   BLKBLK   BLK
TXTTXTTXTTXTTXTTXTTXTTXTTXT
BLKBLKBLKBLKBLKBLKBLKBLKBLK

আউটপুট 2 হওয়া উচিত কারণ এটি দ্বিতীয় সিয়ারপিনস্কি কার্পেট পুনরাবৃত্তির আকার।

যেমন পাঠ্য ব্লক চলছে

TXT
BLK

আউটপুট করা উচিত 0কারণ এটি জিরোথ পুনরাবৃত্তি হিসাবে বিবেচনা করা যেতে পারে।

এটি আরও সমস্ত পুনরাবৃত্তির জন্য কাজ করা উচিত। (কমপক্ষে তাত্ত্বিকভাবে, ধরে নেওয়া কম্পিউটারের মেমোরি এবং সমস্ত রয়েছে))

বিস্তারিত

  • প্রোগ্রামগুলি তাদের উত্স কোড সম্পর্কে তথ্য পড়তে বা অ্যাক্সেস করতে পারে না। এটি একটি কঠোর চ্যালেঞ্জের মতো আচরণ করুন।
  • আউটপুট স্টাডাউট বা অনুরূপ বিকল্পে চলে যায়। কেবলমাত্র নম্বর এবং একটি alচ্ছিক ট্রেলিং নিউলাইন আউটপুট। কোনও ইনপুট নেই।
  • পাঠ্য ব্লকে এমন কোনও অক্ষর থাকতে পারে যা লাইন টার্মিনেটর হিসাবে বিবেচিত হয় না । পাঠ্য ব্লকে ফাঁকা স্থান থাকতে পারে।
  • কার্পেটের "খালি স্থান" অবশ্যই পুরোপুরি স্পেস অক্ষর নিয়ে গঠিত ।
  • আপনি বিকল্পভাবে অনুমান করতে পারেন যে সমস্ত প্রোগ্রামের একটি নতুন পংক্তি রয়েছে।

আপনি এই স্ট্যাক স্নিপেটটি কোনও পুনরাবৃত্তিতে প্রদত্ত পাঠ্য ব্লকের কার্পেট তৈরি করতে ব্যবহার করতে পারেন:

<style>#o,#i{font-family:monospace;}</style><script>function c(e){e=e.split("\n");for(var n=new Array(3*e.length),t=0;t<n.length;t++){var l=t%e.length;n[t]=e[l]+(t>=e.length&&t<2*e.length?e[l].replace(/./g," "):e[l])+e[l]}return n.join("\n")}function f(){for(i=document.getElementById("i").value,n=parseInt(document.getElementById("n").value);n>0;)i=c(i),n--;document.getElementById("o").value=i}</script><textarea id='i'placeholder='code block...'rows='8'cols='32'></textarea><br>Iterations <input id='n'type='text' value='1'><br><br><button type='button'onclick='f()'>Generate</button><br><br><textarea id='o'placeholder='output...'rows='8'cols='32'style='background-color:#eee'readonly></textarea>

স্কোরিং

যার প্রাথমিক পাঠ্য ব্লকটি ক্ষেত্রের দ্বারা ছোট (প্রস্থের দৈর্ঘ্যের উচ্চতা) জমা দেওয়া বিজয়ী। TXT\nBLKউদাহরণস্বরূপ 6. স্কোর 2 দ্বারা 3 (মূলত সবচেয়ে কম কোড জয়ী, অত কোড-গলফ ট্যাগ।)

টাইব্রেকার সাবমিশনে যান যা তাদের পাঠ্য ব্লকের কয়েকটি স্বতন্ত্র অক্ষর ব্যবহার করে। এখনও বাঁধা থাকলে উত্তর পোস্ট করুন প্রথম জয়।

উত্তর:


23

সিজেম, 9 বাইট

আমি মনে করি এটির উন্নতি করা যেতে পারে তবে আপাতত এর সাথে চলুন ...

];U):U8mL

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

];             "Wrap everything on stack in an array and discard it";
               "Before this point, the only thing on array can be the log 8 result of";
               "last updated value of U, or nothing, if its the first code";
  U):U         "Increment by 1 and update the value of U (which is pre initialized to 0)";
      8mL      "Take log base 8 of U. This is the property of Sierpinski carpet that";
               "the occurrence of the code is 8 to the power iteration count, indexed 0";

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


35

পিট - 32 * 6 = 192

এখানে চিত্র বর্ণনা লিখুন

আমি খালি জায়গাটি পরীক্ষক প্যাটার্ন দিয়ে পূরণ করেছি। আমি মনে করি এটি সিয়েরপিনস্কিকে কিছুটা ট্রিপিয়ার করে তুলেছে।

এখানে দ্বিতীয় পুনরাবৃত্তি: এখানে চিত্র বর্ণনা লিখুন

আসল: 32 * 7

এখানে চিত্র বর্ণনা লিখুন


19

> <> , 11 * 2 = 22

";n"00pbi1v
+$3*:@3-0.>

এখানে আমরা <> 'র জাম্প / টেলিপোর্ট কার্যকারিতাটি ব্যবহার করে একটি পৃথক পদ্ধতি গ্রহণ করি।

প্রোগ্রামটি কেবল প্রথম সারিতে ব্লকগুলি কার্যকর করে, 1 ম / 2 য় ব্লকটি চালাচ্ছে, তারপর তৃতীয় / চতুর্থ ব্লকগুলি, 9 তম / 10 তম ব্লকগুলি, 27 তম / 28 তম ব্লকগুলি (3 এর ক্ষমতায় যাওয়া)। উপরের সারিতে যেমন 3^nব্লক রয়েছে, nপ্রোগ্রামটি শুরুর আগেই কেবল ব্লকগুলি কার্যকর করা হয়, স্ট্যাক এবং হোল্টগুলির শীর্ষস্থানটি আউটপুট করে ( nমাধ্যমে দেওয়া নির্দেশের কারণে p)।

প্রোগ্রামটি "কোনও ইনপুট নেই" নিয়মটি ব্যবহার করে, যেমন iকমান্ডটি ইওএফ পূরণ করা হলে স্ট্যাকের উপর -1 চাপ দেয়। সুতরাং এটি পরীক্ষা করার জন্য আপনাকে খালি ফাইলটিতে পাইপ লাগাতে হবে।


পূর্ববর্তী জমা, 7 * 4 = 28

l"v"10p
v>:1=?v
3  ;n{<
<^}+1{,

প্রথম লাইন অবিচ্ছিন্নভাবে প্রতিটি ব্লকের জন্য স্ট্যাকের দৈর্ঘ্যকে ধাক্কা দেয় এবং পুট কমান্ডটি ব্যবহার করে প্রথম "উদ্ধৃতিটিকে ডাউন অ্যারোতে পরিবর্তন করে । প্রথম লাইন শেষ হওয়ার পরে, স্ট্যাকটি দেখতে মনে হচ্ছেvp

[0, 1, 2, .., 3^n]

(লক্ষ করুন যে প্রাথমিকটি lদুটিবার ব্যবহৃত হয়েছে))

শেষ তিনটি লাইন তারপরে আমাদের 1 টি আঘাত করার আগে আমাদের 3 টি দিয়ে কতবার ভাগ করতে হবে তা গণনা করুন (যেহেতু> <> লগ ফাংশন নেই)। নীচের শূন্যটি গণনাটির উপর নজর রাখতে ব্যবহৃত হয়।


13

পার্ল, 26

$_+=.91/++$n;
die int."\n";

এটি বেস 3 লোগারিদম আনুমানিক করতে সুরেলা সিরিজ ব্যবহার করে। আমি মনে করি এটি কার্যকর হয়, তবে আমি কেবল এটি অল্প সংখ্যক জন্য চেষ্টা করেছি। ব্যবহার করার ধারণাটির জন্য স্কাইয়ামি ওসিফ্রেজকে ধন্যবাদ die

পুরানো সংস্করণ (34):

$n--or$n=3**$s++;
print$s-1if!$o++;

এটা খুব ঝরঝরে!
চটজলদি ossifrage

10

পার্ল, 30 (15 × 2)

প্রথমত, আমি দাবি করতে যাচ্ছি যে 10 পুনরাবৃত্তিগুলি একটি যুক্তিসঙ্গত সীমা, 2 32 নয় । 10 টি পুনরাবৃত্তির পরে, এন বাইট সমন্বিত একটি প্রোগ্রামটি প্রসারিত হবে ( এন × 3 20 ) বাইট (প্লাস লাইন ব্রেক), যা এন = 1 এর জন্য 3 গিগাবাইটেরও বেশি । একটি 32-বিট আর্কিটেকচার 11 পুনরাবৃত্তিগুলি হ্যান্ডেল করতে পুরোপুরি অক্ষম হবে। (এবং স্পষ্টতই 2 32 পুনরাবৃত্তির জন্য মহাবিশ্বে পর্যাপ্ত কণা নেই )।

সুতরাং এখানে আমার সমাধান:

$n++; $_=log$n;
print int;exit;

এটি $nপ্রথম লাইনে পরিবর্তনশীল বৃদ্ধি করে এবং প্রতিটি পদক্ষেপে এর লোগারিদম গণনা করে কাজ করে। দ্বিতীয় লাইনটি এই লোগারিদমের পূর্ণসংখ্যা অংশ প্রিন্ট করে এবং প্রস্থান করে।

প্রথম 10 পুনরাবৃত্তির জন্য সঠিক ফলাফল দেওয়ার জন্য বেস (2.718 ..) এর একটি সহজ লোগারিদম যথেষ্ট কাছাকাছি।


2
ওপি অনুসারে, এটি সমস্ত ত্রুটিগুলির জন্য তাত্ত্বিকভাবে কাজ করা উচিত।
নাথান মেরিল

2
@ নাথানমিরিল ভাল, ঠিক আছে তবে মূল বৈশিষ্টটি মেনে চলার জন্য এটি বিকল্প মহাবিশ্বেও কাজ করতে হত। প্রশ্নটি তখন থেকেই সম্পাদিত হয়েছে।
চটজলদি ossifrage

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

এই জমাগুলির বেশিরভাগটি কেবল 3 ^ nx 1 টাইলের শীর্ষ সারিতে নিয়ন্ত্রণ রাখে। আপনি যদি কার্পেটের কেবলমাত্র সেগমেন্টটি তৈরি করেন তবে আপনি কিছুটা এগিয়ে যেতে পারেন। প্রায় অবশ্যই যেখানে রাউন্ডিং ত্রুটিগুলি আপনাকে ভঙ্গ করবে।
ক্যাপচার্যাগ

1
আমি ইতিমধ্যে উল্লেখ করেছি যে, আসল প্রশ্নটি এমন কোডের জন্য জিজ্ঞাসা করেছিল যা "যুক্তিসঙ্গত" সংখ্যার (2 ^ 32 পর্যন্ত) স্কেল করতে পারে । যদি আপনি গণিতগুলি করেন, আপনি দেখতে পাবেন যে এমনকি একটি একক বাইট 10 ^ 4098440370 বাইটেরও বেশি পরিমাণে পুনরুক্তি হওয়ার পরে প্রসারিত হবে। আমি কোন উত্তর আমি ভেবেছিলাম যে একটি বিট ছিল প্রস্তাবিত আরো যুক্তিসঙ্গত, কিন্তু তারপর থেকে শব্দ "যুক্তিসঙ্গত" প্রশ্ন থেকে অদৃশ্য হয়ে গেছে করেছেন: - /। দেখুন, আমি এখানে সম্পন্ন করেছি। আপনি যদি পছন্দ না করেন তবে এই উত্তরটিকে নীচে নামান।
স্কচিমিশ ওসিফ্রেজ

9

গল্ফস্ক্রিপ্ট, 9 * 2 = 18

0+       
,3base,(}

(দ্রষ্টব্য যে প্রথম লাইনে এটি আয়তক্ষেত্রাকার করতে পেছনের স্থান রয়েছে)

আমি গল্ফস্ক্রিপ্টের জন্য লগ ফাংশনটি খুঁজে পাইনি, তাই baseকরতে হয়েছিল।

গল্ফস্ক্রিপ্ট একটি খালি স্ট্রিং দিয়ে শুরু হয়, তাই 0+কেবল স্ট্রিংয়ের দৈর্ঘ্য 1 দ্বারা বাড়ায় (জোর করে)। প্রথম লাইন শেষ হওয়ার পরে, স্ট্যাকের দৈর্ঘ্যের একটি স্ট্রিং থাকবে 3^n, যা আমরা সুপার মন্তব্য করার আগে লগ বেস 3 গ্রহণ করি। nতারপরে স্বয়ংক্রিয়ভাবে মুদ্রিত হয়।


আপনি স্ট্রিংয়ের পরিবর্তে একটি পূর্ণসংখ্যা ব্যবহার করে 2 টি অক্ষর বাঁচাতে পারেন এবং ,দ্বিতীয় লাইনে এটি সংরক্ষণ করে । প্রথম লাইন 0or):; দ্বিতীয় লাইন 3base,(}। অন্যান্য স্পষ্ট লক্ষ্য (দ্বিতীয় লাইনে রয়েছে। এটি কৌশলযুক্ত, তবে প্রথম লাইনটি 1+~abs(7 * 2 আয়তক্ষেত্রের সাথে প্রতিস্থাপনের মাধ্যমেও সরানো যেতে পারে ।
পিটার টেলর

8

সি, 12x8 = 96

@Ciamej দ্বারা অনুপ্রাণিত হয়ে, আমি এটি হ্রাস করেছি। এটি 3 টি কৌশল দ্বারা বিভাজনটি ব্যবহার করে প্লাস কার্পেট কার্যকরভাবে কোনওটিকে একটি লুপের মধ্যে রূপান্তর করে the

কোডটি জিসিসি / উবুন্টুতে 3 পর্যন্ত পুনরাবৃত্তির জন্য পরীক্ষা করা হয়েছিল।

#ifndef A //
#define A //
x;main(a){//
a++;/*    */
if(a/=3)x++;
printf(   //
"%d",x);} //
#endif    //

পূর্ববর্তী সমাধান: সি, 11x12

আকারের বিজয়ী নয়, তবে ওহে, এটি সি।

এটি বিটশিফ্টিংয়ের মাধ্যমে ব্লককাউন্টের লগ 2 সন্ধান করে, তারপরে লগ 3 অনুমান করার জন্য কিছু ম্যাজিক নম্বর এবং ইন্ট ট্রুনকেশন ব্যবহার করে। গণিতে 26 টি পুনরাবৃত্তি (42 বিট সংখ্যা) পর্যন্ত কাজ করা উচিত।

#ifndef A//
#define A//
int n=0;//_
int main//_
(v,c){//___
n+=1;/*..*/
while(n//__
>>=1)v++;//
n=.3+.62*v;
printf(//__
"%d",n);}//
#endif//__

হাই, আমি আপনার সমাধানটির একটি সংক্ষিপ্ত সংস্করণ পোস্ট করেছি।
কিয়ামজ

সেই সাথে যদি দুর্দান্ত কৌশল! ;)
সিয়ামেজ

6

সিজেম, 9 বাইট

ব্যবহারের ধারণাটি ]অপ্টিমাইজার থেকে এসেছে তবে এটি গণনা করার জন্য খুব আলাদা পদ্ধতি ব্যবহার করে।

X~]:X,8mL

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

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

X~          "push X and dump its contents.  On the zeroth iteration, X is a single number, but later is it an array.";
  ]         "wrap everything into an array.  The stack would contain the contents of X plus the result of the previous instance of the code";
   :X       "store this array back into X.  X is now 1 element longer";
     ,      "take the length of X";
      8mL   "do a base-8 logarithm of it";

অন্য দুটি 9 বাইট সমাধান

]X+:X,8mL

],X+:X8mL

এটি আসলে টাইব্রেকারের সাথেও অপ্টিমাইজারকে সংযুক্ত করে। : পি টাইব্রেকারব্রেকার: আগের পোস্ট জেতে।
ক্যালভিনের শখ

আমি মনে করি এটি নির্বিশেষে এটি একটি ভাল সমাধান। আমি 9 টি চর মারতে পারিনি।
PhiNotPi

আমি মনে করি সাধারণ পদ্ধতিটি কেবল একই (এবং এটিই একমাত্র পন্থা যা বোঝায়) - একটি পরিবর্তনশীল থাকুন, এটি কোনওভাবে বাড়িয়ে 1 1
অপ্টিমাইজার

4

পাইথন 2, 15 * 3 = 45

m=n=0;E=exit  ;
m+=1;n+=m>3**n;
print n;E()   ;

প্রথম-সারি-এর পরে-লগ-থ্রি-এবং-প্রস্থান আইডিয়াটির আর একটি বাস্তবায়ন। সম্ভবত এখনও আরও কিছুটা গল্ফ করা যেতে পারে।



2

গল্ফস্ক্রিপ্ট, 7 * 2 = 14

1+~abs(
3base,}

এটি Sp3000 এর উত্তর দ্বারা অনুপ্রাণিত হয়েছে এবং বিশেষত দীর্ঘ দ্বিতীয় লাইনটি অনুকূল করার ইচ্ছা দ্বারা। 3base,বেস -3 লোগারিদম যতটা সংক্ষিপ্ত তা জিএসে পাবেন এবং সুপার-মন্তব্যটি }স্পষ্টতই অনুকূল।

প্রথম লাইনের জন্য যা দরকার তা হ'ল ''প্রাথমিক স্টিডিন থেকে 0 পর্যন্ত খালি স্ট্রিংটি ম্যাপ করা এবং তারপরের প্রতিটি উত্তর-নেতিবাচক পূর্ণসংখ্যার মানচিত্র করা। এইভাবে আমরা 3^n - 1স্ট্যাকের সাথে প্রথম লাইনটি শেষ করি এবং 3base,কোনও হ্রাসের প্রয়োজন হয় না।


2

সি, 13x8

#ifndef A//__
#define A//__
x;a;main(){//
a++;;;;;;;;;;
while(a/=3)//
x++;printf(//
"%d",x);}//__
#endif//_____

1

পার্ল, 76

আমি জানি এটি পোস্ট করার সম্ভবত খুব বেশি কিছু নেই যেহেতু এটি ইতিমধ্যে পুরোপুরি মারানো হয়েছে, তবে যাইহোক এখানে আমার বর্তমান সমাধান।

$_++;                                 
if(not$_&$_-1){print log()/log 8;$_--}

@ অ্যালেক্স এটি 1 ম পুনরাবৃত্তিতে এমনকি কার্যকর বলে মনে হচ্ছে না।
ফিনোটপিআই

হ্যাঁ, এটি যেমন দাঁড়িয়ে থাকে তেমন কাজ করে। আপনি কি আপনার পদ্ধতি পরীক্ষা করেছেন?
ফিনোটপিআই

খনি আইডোন: কাজ করে আদর্শ
PhiNotPi

Gotcha। আমি একটি গুরুত্বপূর্ণ বিশদ মিস করলাম যা এটিকে আগে কাজ করা থেকে বিরত রাখে। আপনি ঠিক বলেছেন, আমার পরামর্শটি ভুল।
অ্যালেক্স এ।

1

> <> (মাছ), 12 * 3 = 36

আরও সরল> <> সমাধান:

'v'00p0l1+  
>  :2-?v$1+v
^$+1$,3< ;n<

আমরা প্রথমে শীর্ষ ব্লকের উপরের সারিটি চালাই। 'v'00pরাখে vপ্রোগ্রাম পয়েন্টার নীচের দিকে বিধায়ক যখন এটি লাইনের শেষে পৌঁছনো পরে ফিরে শুরু পায় পুরো প্রোগ্রামটির প্রথম অবস্থানে। তার আগে প্রতিটি ব্লক 0 এবং স্ট্যাকের দৈর্ঘ্যটিকে এতে 1 চাপ দেয়। (স্ট্যাকটি হবে 0 2 0 4 0 6 ...)

দ্বিতীয় এবং তৃতীয়ের প্রথমার্ধে আমরা 2 টি পাওয়ার আগে আমরা শীর্ষ স্ট্যাক উপাদানকে কতবার বিভক্ত করতে পারি তা গণনা করি (আমরা এটি দ্বিতীয় থেকে শীর্ষ উপাদানকে সঞ্চয় করি)।

শেষে আমরা স্ট্যাকের দ্বিতীয় থেকে শীর্ষ উপাদান আউটপুট করি।


1

লুয়া, 3 * 17 = 51

বেশিরভাগ লোক হিসাবে একই কৌশল:

x=(x or 0)+1;    
y=math.log(x,3)  
print(y)os.exit()

1

পিএইচপি, 22 × 2 = 44 27 × 2 = 54

<?php $i++          ?>
<?php die(log($i,3))?>

অন্য একটি গণনা-লগ 3-আউট নিতে। খুব ছোট নয়, তবে আমার প্রথম গল্ফ;)


অন্য যে কোন জায়গায় পিসি.এস.ই. তে, পোস্ট করার আগে ডকুমেন্টেশন চেক করুন :)
ব্ল্যাকহোল

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