ক্রম মুদ্রণ করুন


24

21, 21, 23, 20, 5, 25, 31, 24,?

এই ধাঁধাটি দ্বারা অনুপ্রাণিত হয়ে একটি পূর্ণসংখ্যা n>0 , আপনি কোনও অ-পূর্ণসংখ্যার না পৌঁছানো পর্যন্ত নিম্নলিখিত ক্রমটি মুদ্রণ করুন (ক্ষতিপূরণে যদি আপনি প্রথমে ধাঁধাটি নিজে সমাধান করতে চান)

a0=n
a4k+1=a4k(4+ +1)
একটি4+ +2=একটি4+ +1+ +(4+ +2)
a4k+3=a4k+2(4k+3)
a4k+4=a4k+3/(4k+4)
বা আরও স্বজ্ঞাতভাবে: * 1, +2, -3, / 4, * 5, +6, -7, / 8, ...

TestCases:

1: 1, 1, 3, 0, 0, 0, 6, -1
2: 2, 2, 4, 1
3: 3, 3, 5, 2
4: 4, 4, 6, 3
5: 5, 5 , 7, 4, 1, 5, 11, 4
6: 6, 6, 8, 5
9: 9, 9, 11, 8, 2, 10, 16, 9
21: 21, 21, 23, 20, 5, 25, 31, 24, 3, 27, 37, 26

ইনপুট এবং আউটপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে নেওয়া যেতে পারে, স্ট্যান্ডার্ড লুফোলগুলি যথারীতি নিষিদ্ধ।

চেতনায় , বাইটে সংক্ষিপ্ত উত্তর!

স্যান্ডবক্স: https://codegolf.meta.stackexchange.com/a/18142/59642


পরিবর্তে আমরা কি অনুক্রমের অসীম তালিকাটি ফিরিয়ে দিতে পারি? এছাড়াও, 1 এর ফলাফল কি সঠিক? 6.. এর পরে আমার কিছু আলাদা ছিল
কোল

3
@ কোল যেহেতু ক্রমটি শেষ হয়েছে আমি মনে করি না আপনি কোনও অসীম তালিকা আউটপুট করতে পারবেন।
গম উইজার্ড

1
আমরা কি 1 টি সূচকে আউটপুট দিতে পারি, অর্থাৎ প্রথম উপাদানটি এড়িয়ে যেতে পারি?
জো কিং

1
না, পুরো ক্রমটি অবশ্যই মুদ্রিত হতে হবে।
ইনফিনিটিজারো

1
হ্যাঁ আপনি @KevinCruijssen may
infinitezero

উত্তর:


6

05 এ বি 1 ই (উত্তরাধিকার) , 18 17 বাইট

[N"/*+-"Nè.VÐïÊ#=

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

[                # Start an infinite loop:
 N               #  Push the 0-based loop-index
  "/*+-"         #  Push string "/*+-"
        Nè       #  Index into this string with the loop-index
          .V     #  And use a 05AB1E-eval to calculate the next number
 Ð               #  Triplicate this number
  ï              #  Cast it to an integer
   Ê             #  And if it's NOT equal to the number we triplicated:
    #            #   Stop the infinite loop
  =              #  Print the number without popping

আমি এখানে 05AB1E এর উত্তরাধিকার সংস্করণটি ব্যবহার করছি এবং এটি মুদ্রণের আগে পরবর্তী সংখ্যাটিও প্রথম গণনা করবো কারণ লুপটি 0-ভিত্তিক এবং এটি /0প্রথম পুনরাবৃত্তিতে একটি কাজ করবে । এটি আগের N>এবং এর তুলনায় একটি বাইট সংরক্ষণ করেছে "*+-/"। এটি কেবলমাত্র কাজ করে, কারণ উত্তরাধিকার সংস্করণে 0 দ্বারা বিভাজিত একটি সংখ্যা একই থাকে; নতুন সংস্করণে এটি 0 হয়ে যাবে; এবং প্রকৃত গণিতে এটি শূন্য ত্রুটির দ্বারা বিভাজন দেয়।


11

স্ক্র্যাচ 3.0 39 ব্লক / 323 বাইট

ওহ, আমি তোমাকে মিস করছি

লাইনে চেষ্টা করুন স্ক্র্যাচ এ !

বিকল্পভাবে, এসবি সিনট্যাক্স হিসাবে:

when gf clicked
delete[all v]of[o v
ask()and wait
set[. v]to(answer
set[n v]to(1
repeat until<(n)contains[.
if<((n)mod(4))=(0
set[. v]to((. )*(n
else
if<((n)mod(4))=(1
change[. v]by(n
else
if<((n)mod(4))=(2
change[. v]by((0)-(n
else
set[. v]to((. )/(n
end
end
end
add(n)to[o v
change[n v]by(1
end
delete(length of(o))of[o v

ছেলেরা দেখুন, আপনার অভিনবতার সাথে মজা করছেন eval বিবৃতি ! ভাল, আমি না! না ... স্ক্র্যাচের বিবর্তন নেই, তাই আমাকে কঠোরভাবে কাজগুলি করতে হয়েছিল ... যদি বিবৃতি দেওয়া হয়।

কমপক্ষে এটি না goto...


2
আপনার দিকে তাকান, বিবৃতি এবং ভাসমান বিভাগের সাথে মজা করছেন! ভাল, আমি না! না ... হোয়াইটস্পেসে বিভাজন নেই, যদি-বিবৃতি বা ভাসমান বিভাগ নেই, সুতরাং gotoস্ট্যাক-ভিত্তিক ভাষায়, আমরা ভাগ করতে পারি কিনা তা যাচাই করার জন্য আমাকে কঠোরভাবে কাজগুলি করতে হয়েছিল ... গুলি এবং একটি বিয়োগফল লুপ had । ; পি (সমস্ত গুরুত্বের সাথে, আমার কাছ থেকে চমৎকার উত্তর, +1! আমি আমার
সদ্য

8

হোয়াইটস্পেস , 251 227 202 বাইট

[S S S N
_Push_0][S N
S _Duplicate_0][S N
S _Duplicate_0][T   N
T   T   _Read_STDIN_as_integer][T   T   T   _Retrieve_input][N
S S N
_Create_Label_LOOP][S N
S _Duplicate_top][T N
S T _Print_as_integer][S S S T  S T S N
_Push_10_newline][T N
S S _Print_as_character][S N
T   _Swap_top_two][S S S T  N
_Push_1][T  S S S _Add][S T S S T   N
_Copy_2nd_item][S T S S T   N
_Copy_2nd_item][S N
S _Duplicate_top][S S S T   S S N
_Push_4][T  S T T   _Modulo][S N
S _Duplicate_top][N
T   S S N
_If_0_Jump_to_Label_DIVIDE][S S S T N
_Push_1][T  S S T   _Subtract][S N
S _Duplicate_top][N
T   S T N
_If_0_Jump_to_Label_MULTIPLY][S S S T   N
_Push_1][T  S S T   _Subtract][N
T   S S S N
_If_0_Jump_to_Label_ADD][S N
T   _Swap_top_two][S T  S S T   N
_Copy_2nd_item][T   S S T   _Subtract][N
S N
N
_Jump_to_LOOP][N
S S S N
_Create_Label_DIVIDE][S N
N
_Discard_top][T S T S _Divide][S T  S S T   S N
_Copy_3nd_item][S T S S T   S N
_Copy_3nd_item][T   S T T   _Modulo][N
T   S N
_If_0_Jump_to_Label_LOOP][N
N
N
_Exit_Program][N
S S T   N
_Create_Label_MULTIPLY][S N
N
_Discard_top][T S S N
_Multiply][N
S N
N
_Jump_to_Label_LOOP][N
S S S S N
_Create_Label_ADD][T    S S S _Add][N
S N
N
_Jump_to_Label_LOOP]

বর্ণ S(স্থান), T(ট্যাব) এবং N(নতুন লাইন) কেবল হাইলাইট হিসাবে যুক্ত করা হয়েছে।
[..._some_action]শুধুমাত্র ব্যাখ্যা হিসাবে যুক্ত।

এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা স্পেস, ট্যাব এবং নতুন লাইন সহ)।

@ জোকিং পরামর্শ দেওয়ার মন্তব্যের পরে -24 বাইটস n%i > 0। যদিও শুধুমাত্র if(x < 0)এবং if(x == 0)হোয়াইটস্পেসে উপলভ্য, কেবলমাত্র চেকিং if(x*-1 < 0)মূলত একই if(x > 0)
একটি অতিরিক্ত -25 ধন্যবাদ বাইট @JoKing

ব্যাখ্যা:

স্ক্র্যাচ উত্তর থেকে উদ্ধৃতি :

কমপক্ষে এটি না goto...

কেউ কি বলেছে goto? হোয়াইটস্পেসে gotoদুটি লুপ এবং ইফ-স্টেটমেন্ট তৈরি করা ছাড়া আর কিছুই নেই । xD এছাড়াও এটি একটি স্ট্যাক-ভিত্তিক ভাষা, তাই আমাকে প্রায়শই প্রায়শই অদলবদল / বাতিল / অনুলিপি করতে হয়। এবং শীর্ষস্থানীয় বিষয়গুলি: হোয়াইটস্পেসে এমনকি ভাসমান পয়েন্ট এবং কেবলমাত্র পূর্ণসংখ্যা-বিভাগ নেই, তাই আমি ব্যবহার করেছিn % i * -1 < 0 পূর্ণসংখ্যা বর্তমান সংখ্যাটি ভাগ করতে না পারলে প্রোগ্রামটি প্রস্থান করতে ।

ছদ্ম-কোড:

Integer n = STDIN as input
Integer i = 0
Label LOOP:
  Print n as number
  i = i + 1
  Integer t = i % 4
  If(t == 0):
    Jump to Label DIVIDE
  t = t - 1
  If(t == 0):
    Jump to Label MULTIPLY
  t = t - 1
  If(t == 0):
    Jump to Label ADD
  n = n - i
  Jump to Label LOOP
Label DIVIDE:
  n = n / i
  Integer m = n % i
  If(m == 0):
    Jump to Label LOOP
  Exit program
Label MULTIPLY:
  n = n * i
  Jump to Label LOOP
Label ADD:
  n = n + i
  Jump to Label LOOP

আপনি পরম প্রতিভা। আমার upvote আছে!
জোনো 2906

@ জোকিং হোয়াইটস্পেসে কেবল আছে if(n == 0)বা if(n < 0)উপলভ্য। দুর্ভাগ্যক্রমে না if(n > 0)বা if(n != 0)। তবে আমি নিশ্চিত যে কয়েকটি দিক সরল করা যায়। এই বর্তমান সমাধানটি ডিবাগিংয়ের একটি পরীক্ষামূলক এবং ত্রুটি ছিল, তবে সম্ভবত আমার কেবল একটি পদক্ষেপ নেওয়া উচিত এবং একটি ছোট পদ্ধতির পুনর্বিবেচনা করা উচিত। আমার আবার সময় পেলে এবং সিউডো কোডটি ঠিক করে দিয়েছিলে, আপনি সত্যই ঠিক in
বলেছিলেন

1
আমি নিশ্চিত না এটি কতটা কার্যকরী, তবে সম্ভবত আপনি তা করতে পারতেন m = n%i; n = n/i; if (m == 0) jump to LOOP; exit program?
জো কিং

1
আপনি কি swap top two, copy second itemপ্রতিটি বিভাগে এটি অনুলিপি না করে সামগ্রিক লুপটিতে স্থানান্তর করতে পারেন?
জো কিং

1
@ জোকিং ধন্যবাদ, এই দুটি পরামর্শই বাইট সংরক্ষণ করেছে। প্রথম পরামর্শটি -7, এবং দ্বিতীয়টি -18। :)
কেভিন ক্রুইজসেন

8

হাস্কেল , 75 74 73 বাইট

-1 বাইট উইল নেস -1 বাইট ধন্যবাদ নিমিকে ধন্যবাদ

(#1)
n#i|i`mod`4<1,n`mod`i>0=[n]|y<-i+1=n:(x!!i)n i#y
x=div:(*):(+):(-):x

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

বাইটগুলিতে সঞ্চয় করতে ভগ্নাংশের ints ব্যবহার এড়ানো যায়




7

জাভাস্ক্রিপ্ট (ভি 8) , 52 বাইট

4 টি শর্তের গ্রুপগুলি মুদ্রণ করে। জিবি এর রুবি উত্তর দ্বারা অনুপ্রাণিত ।

n=>{for(k=0;n%1==0;n/=k+=3)print(n,n*=++k,n-~k,--n)}

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


জাভাস্ক্রিপ্ট (ভি 8) , 54 বাইট

ক্রমের শর্তাবলী মুদ্রণ করে।

n=>{for(k=0;n%1==0;n=eval(n+'*+-/'[k++&3]+k))print(n)}

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


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

একটি অ্যারে প্রদান করে।

f=(n,k)=>k&&(n=eval(n+'/*+-'[k&3]+k))%1?[]:[n,...f(n,-~k)]

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


5

পার্ল 6 , 44 বাইট

{$_,{($_,<* + - />[$++%4]~++$).EVAL}...^*%1}

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

নামবিহীন কোড ব্লক যা একটি সংখ্যা নেয় এবং একটি অনুক্রম দেয়। যদি আমরা প্রথম উপাদানটি এড়িয়ে যেতে পারি (যা সর্বদাই দ্বিতীয় উপাদান হিসাবে একই রকম হয়) তবে আমরা অপসারণ করে 3 বাইট সংরক্ষণ করতে পারি$_,



5

পিট , 297 190 144 কোডেল (432 বাইট)

নতুন পিট কোড

ব্যবহার করে একটি নতুন পদ্ধতির চেষ্টা করে pointerআউটপুট কোডটি একীকরণের জন্য সুইচ (k মড 4) হিসাবে কমান্ড , যার ফলে একটি ঘনক 10x19 কোড চিত্র পাওয়া যায়। তারপরে আমি এটিকে 1 সারি এবং 2 টি কলাম দিয়ে 8x18 এ নেমে গেল।

এটি কীভাবে কাজ করে তা দেখার জন্য এখানে একটি ট্রেস দেওয়া হয়েছে:

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

প্রথম লাইনটি সূচক হিসাবে সূচক হিসাবে স্ট্যাকের উপর 0 চাপায় (যেহেতু আমরা কেবল এটি করতে পারি) push প্রাকৃতিক সংখ্যা পারি, আমরা 2 টি চাপি এবং তারপরে সাবস্ট্রাক্ট করি), তারপরে সংখ্যা হিসাবে ইনপুটটি পড়ে।

বামতমতম সংঘর্ষে নম্বরটি নকল করে এবং একটিকে আউটপুটে আস্তে করে তারপরে সূচকটি স্ট্যাকের শীর্ষে সরানো, বাড়ানো এবং তারপরে তিনবার সদৃশ করার ভাগ করা কোড রয়েছে। তারপরে আমরা pointerকমান্ডের জন্য অন্ধকার সায়ান কোডেলের মাধ্যমে পেস্টেল লাল আর-আকারের ব্লকটিতে প্রবেশ করি যা আমাদের সূচক মডেল 4 এর অবশিষ্ট অংশের জন্য আমাদের বিভিন্ন পথ দেয়।

মোড 1, আমরা গুণ দিয়ে শীর্ষে প্রস্থান করব। আমরা প্রথমে পরে আমাদের সূচীর অনুলিপিটি পরে সরিয়ে ফেলি, তারপরে গুণটি সম্পাদন করি। নূরের জন্য সাদা দিয়ে যাওয়ার পরে, সিসি প্যারিটি ঠিক করার জন্য আমরা উপরের সংঘর্ষে প্রবেশ করি (লুপটি স্থিতিশীল রাখতে এটি আরও অনেকবার উল্টাতে হবে), তারপরে একটিpointer (1) বারে প্রবেশের পরে: এটি একটি হিসাবে কাজ করে আমাদের চারটি পথ ধরুন এবং আমাদের আবার লুপে প্রেরণ করুন।

মোড 2, আমরা যোগফল পিছনে প্রস্থান। রঙের পেন্সিল কোড ব্লক উপায়ে আকৃতি আমরা যেখানে আমরা প্রবেশ থেকে উপরে একটি সারি থেকে প্রস্থান, এবং আমরা লাল codel মাধ্যমে প্রস্থান দ্বারা স্ট্যাকের সম্মুখের 3 আমরা ধাক্কা ব্যবহার pointer (3)ঊর্ধ্বমুখী নিজেদেরকে। এই সংঘর্ষগুলিতে পাটিগণিতের আগে সাদা জায়গা এবং সিসিটিকে ধাক্কা দেওয়ার এবং স্যুইচ করার কিছুটা আলাদা ক্রম রয়েছে কারণ অন্যথায় আমাদের পাশের সংঘর্ষে পূর্ণসংখ্যার-মূল্যবান কোডেলগুলির সাথে রঙের ওভারল্যাপ হবে।

Mod 3 বিয়োগের জন্য আমাদের নিচের দিকে প্রেরণ করুন। গুণ হিসাবে একই চুক্তি, আমরা পথে চলার পথে বিভাগের পথটি অতিক্রম না করে (প্যাস্টেল গ্রিন বারে প্রবেশের সময় সিসি পৃথক সমতা দেখায়, দুটি মৃত্যুদণ্ড কার্যকর করা হয় সেই বারটি বিভিন্ন প্রান্তে প্রস্থান করে)। এটি করার সময়, আমরা একটি অযাচিত duplicateকমান্ডটি popতুলি , তাই আমরা সিসি সংশোধন এবং সংগ্রহ বারে প্রবেশের আগে গা green় সবুজ কোডেলটি দিয়ে ফিরে আসি।

মোড 4, আমরা ভাগ করার জন্য সরাসরি এগিয়ে যান। এখানে, প্রথমে আমাদের দুটি জোড়া এন এবং একটি অপারেশন করার জন্য স্ট্যাকটিকে আরও তীব্রভাবে পুনর্বিবেচনা করতে হবে, কারণ এটির পূর্ণসংখ্যা হয় কিনা তা পরীক্ষা করতে হবে। আমরা modপ্রথম জোড়ায় আমার কাজটি করি , তারপরে notফলাফলের পরে, তবে pointerএটির জন্য এটি ব্যবহার করুন - যদি এটি বিভাজ্য না হয় তবে আমরা সোজা চলে যাচ্ছি, যা আমাদের দুটি pointerকমান্ড সহ বিপরীত কোণে অনিবার্য ব্লকে প্রেরণ করে এবং এইভাবে প্রোগ্রামটি শেষ করে। অন্যথায়, আমরা ডানদিকে ঘুরিয়ে দিয়েছি এবং divideম্যাজেন্টা বারে প্রবেশের আদেশ পেয়েছি।

পুরনো সংস্করণ

পিট কোড

খুব সোজা কোড: স্ট্যাকের উপর একটি 1 এবং ইনপুট টিপুন, তারপরে চারটি ক্রিয়াকলাপের মাধ্যমে লুপ করুন: স্ট্যাকের শীর্ষে সূচকটি পরিবর্তন করে, এটি 1 দ্বারা বাড়িয়ে, নকল করে, একটি অনুলিপি ফিরিয়ে রাখুন, গাণিতিক ক্রিয়াকলাপ সম্পাদন করে, নম্বরটি সদৃশ এবং একটি আউটপুট মধ্যে পপিং।

বিভাগের জন্য, যা কেবলমাত্র এক যেখানে ক্রমটি শেষ হতে পারে, এটি প্রথমে এন মোড সূচক == 0 কিনা তা পরীক্ষা করার জন্য আরও জটিল স্ট্যাক তৈরি করে, অন্যথায় এটি অনিবার্য কোডেলে প্রবেশ করে এবং সমাপ্ত হয়। অন্যথায়, বিভাগটি সম্পাদন করতে এটি আই এবং এন এর দ্বিতীয় কপি ব্যবহার করে।


দ্বিতীয় এবং তৃতীয় সারির একসাথে মাশ করা কি সম্ভব হবে? অর্থাত, (0,1) -> (1,2) এ গোলাপী সেলটি পিভট করুন, মাঝখানে 3 টি ঘরটি নীচে স্থানান্তরিত করুন এবং ডান কলামটি 1x2 এ সঙ্কুচিত করুন?
ভেস্কাহ

সহজে হয় না। ডান ঘুরিয়ে চালানোর জন্য আমার কাছে দুটি কোষের প্রয়োজন, হয় push (1) pointerরঙের একটির উপরে একটি কালো কক্ষের জন্য।
AlienAtSystem

4

1
59 বাইট porting দ্বারা Arnauld এর প্রথম জাভাস্ক্রিপ্ট ফাংশন , যার মধ্যে পোর্ট হয় রুবি উত্তর । এবং হ্যাঁ, এই আউটপুটটি অনুমোদিত, চ্যালেঞ্জের মন্তব্যে কেবল ওপি থেকে নিশ্চিতকরণ পেয়েছে।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন ভাল, আমি তা নিয়ে আসতে পারতাম না!
ইনাট

4

রুবি , 56 54 52 বাইট

f=->n,z=1{n%1>0?[]:[n,n*=z,n-~z,n-=1]+f[n/=z+3,z+4]}

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

কিছু চেষ্টা (ব্যর্থ) করার পরে eval, আমি জানতে পেরেছি যে সবচেয়ে সুখী সমাধানটি একবারে 4 টি উপাদান দিয়ে অ্যারে তৈরি করছে, কমপক্ষে রুবিতে।

-২ বাইটের জন্য আর্নল্ডকে ধন্যবাদ।


আমার শেষ উত্তরটি পোর্ট করে 53 বাইট , যা আপনার দ্বারা অনুপ্রাণিত হয়েছিল।
আর্নৌল্ড

3
52 বাইট শ্যাগির প্রস্তাবিত উন্নতি ব্যবহার করে যা জেএসে কেবল দীর্ঘ হিসাবে পরিণত হয়েছিল তবে রুবিতে একটি বাইট সংরক্ষণ করে।
আর্নৌল্ড

4

আর , 90 বাইট , 87 বাইট 85 বাইট 80 বাইট 74 73 বাইট

বিধিগুলির একটি সুস্পষ্ট বাস্তবায়ন:

a=scan();while(T<13)a=c(a,d<-a[T]*T,d+T+1,e<-d-1,e/((T<-T+4)-1));a[!a%%1]

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

সাথে T<13ধাঁধা গভীরতর বিশ্লেষণ থেকে নিম্নলিখিত । প্রকৃতপক্ষে কেবলমাত্র তিন ধরণের সিকোয়েন্স রয়েছে: দৈর্ঘ্য 4, যখন a⁰ 1 মডিউল 8 তে একত্রিত হয় না; দৈর্ঘ্য 12 যখন a⁰ একত্রে 21 মডেল 32; এবং বাকি ক্ষেত্রে 8 এর দৈর্ঘ্য।

লুপগুলি এড়ানো একটি বিকল্প কোডটি 87 বাইটের সাথে দীর্ঘ হওয়া শেষ করে:

`~`=rep;b=(scan()-1)*c(32~4,8,40~3,1,9~3)/32+c(1,1,3,0~3,6,-c(8,1,9,-71,17)/8);b[!b%%1]

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


1
আপনি {}-2 বাইট জন্য সরাতে পারেন ।
রবিন রাইডার

1
এড়িয়ে 74 বাইটlength
রবিন রাইডার

3

হাস্কেল , 104 86 85 বাইট

n#i=n:(cycle[(/),(*),(+),(-)]!!floor i)n i#(i+1)
takeWhile((==).ceiling<*>floor).(#1)

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

h=বাদ দেওয়া যেতে পারে যেহেতু এটি শুধুমাত্র পরীক্ষার জন্য ব্যবহৃত হচ্ছে।

আহ, কোড গল্ফ, যেখানে সময়ের জটিলতায় একটি চতুর্ভুজ বৃদ্ধি একটি চরিত্র হ্রাস করার জন্য মূল্যবান।

104 বাইট

f=flip
g x=scanl(f($))x.zipWith(f($))[1..].cycle$f<$>[(*),(+),(-),(/)]
takeWhile((==).ceiling<*>floor).g

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

আমি এই উত্তরটি আরও ভাল পছন্দ করি তবে হায় হায় এটি দীর্ঘতর।


3

জাপট , 25 24 বাইট

জিবি এর রুবি সমাধানের আরও একটি অভিযোজন ।

%1ª[UU*=°VU´ÒVU]cßU/=V±3

চেষ্টা করে দেখুন

এখানে মূল কৌশলটি cঅ্যারেগুলির জন্য পদ্ধতির ওভারলোডিং । এটি একটি আর্গুমেন্ট হিসাবে অন্য অ্যারে পাস করুন এবং এটি এটি মূল অ্যারেতে যুক্ত করে। এটি সর্বশেষ পুনরাবৃত্তি কল হিসাবে যেমন ঘটেছিল তেমনি একটি সংখ্যা হিসাবে পাস করুন, এবং এটি বহু স্তরের দ্বারা মূল অ্যারে সমতল করে - এক্ষেত্রে 1, গোল করার পরে। তবে, অ্যারেটি কেবলমাত্র এক স্তর গভীর হওয়ায় চ্যাপ্টা এটির কোনও প্রভাব নেই।

%1ª[UU*=°VU´ÒVU]cßU/=V±3     :Implicit input of integer U
%1                           :U modulo 1
  ª                          :Logical OR with
   [                         :Construct and array containing
    U                        :  U
     U*=                     :  U multiplied by
        °V                   :    V (initially 0) prefix incremented
          U´                 :  The new value of U, postfix decremented
            ÒV               :    Subtract the bitwise negation of V
              U              :  The now-decrmented U
               ]             :End array
                c            :Concatenate, or flatten by
                 ß           :  Recursive call to the programme with argument
                  U/=        :    U divided by
                     V±3     :      V incremented by 3

2

জাভা 8, 84 বাইট

n->{for(int i=1;n%1==0;n=new float[]{n/i,n*i,n+i,n-i}[i++%4])System.out.println(n);}

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

চারটি মান সহ একটি অ্যারে তৈরি করা অনুপ্রাণিত হয় @ জিবি'র রুবি উত্তর, যদিও আমি এখন লক্ষ্য করেছি যে যদি বিবৃতিটি একই পরিমাণে বাইট হিসাবে হয় তবে একটি বিবরণী ব্যবহার করা হয়:

n->{for(int i=0;n%1==0;n=++i%4<1?n/i:i%4<2?n*i:i%4<3?n+i:n-i)System.out.println(n);}

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





2

রাটার , 310 বাইট

n=e=$Input;
a=0;
w=While[{m=Modulo[$e];Not[m[1]];}];
w=w[{f=For[4];f=f[@x];f=f[{Print[$e];q=Equal[$x];i=If[{q[1];}];i=i[{k=Times[$e];}];Do[$i];i=If[{q[2];}];i=i[{k=Add[$e];}];Do[$i];i=If[{q[3];}];i=i[{k=Subtract[$e];}];Do[$i];i=If[{q[4];}];i=i[{k=Divide[$e];}];Do[$i];e=k[a=Increment[$a]];}];Do[$f];}];
Do[$w];

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

এটি প্রায় সময় আমি আবার রুটার ব্যবহার করেছি। দুর্ভাগ্যক্রমে, এটি কোনও কাজের জন্য সেরা ভাষা নাও হতে পারে, কারণ এর কোনও রূপ নেইeval , বিবৃতি দিলে আমাকে চারটি ব্যবহার করতে বাধ্য করে cing

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

রুটার কীভাবে কাজ করে

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

left = Times[5];
Print[left[6]];

30 প্রিন্ট আউট হবে: এটি অনলাইন চেষ্টা করুন!। যদিও এটি সাধারণত বিকল্প বিকল্পের চেয়ে দীর্ঘ হয়, এটি সময়ে সময়ে কোনও ফাংশনকে একটি ধ্রুবক যুক্তি, এবং একটি পরিবর্তিত যুক্তি সহ বারবার বলা হয়, যেমন টাইমস টেবিলগুলি প্রিন্ট করার সময়।

এই একটি যুক্তির নিয়ম লুপ এবং শর্তসাপেক্ষ সহ স্থির বা পরিবর্তনশীল নয় এমন সমস্ত কিছুর জন্য প্রযোজ্য। তবে লুপ এবং শর্তসাপেক্ষে (For , Each, While, DoWhile, Ifএবং IfElse) হয় করা সম্ভব , যার অর্থ, যাতে আসলে তাদের চালানোর জন্য,, Doফাংশন কল করা আবশ্যক (উত্তর শেষ লাইনটি দেখুন)। আবার, বারবার একই লুপটি চালানোর সময় এটি বাইটস সংরক্ষণ করতে পারে, বা লুপের সংজ্ঞা এবং চলমান ব্যবস্থার মধ্যে আপনাকে নির্বিচার কোড চালানোর অনুমতি দেয়।

অবশেষে, ভেরিয়েবলগুলি উল্লেখ করার তিনটি উপায় রয়েছে, যার সবগুলিই এই প্রোগ্রামটিতে ব্যবহৃত হয়। প্রথমটি হ'ল সরাসরি রেফারেন্সিং , যেখানে ভেরিয়েবলের নামটি একটি $প্রতীক সহ উপস্থাপিত হয় । এটি সরাসরি ভেরিয়েবলের মান অ্যাক্সেস করে এবং এটি ফেরত দেয়। দ্বিতীয়টি হ'ল কার্যক্ষম রেফারেন্সিং , যার কোনও উপসর্গের অক্ষর নেই। এটি কোডটি ভেরিয়েবলগুলিকে নির্ধারিত (সম্ভাব্য আংশিক) ফাংশন এবং একটি নির্দিষ্ট মান সহ প্রকৃত ভেরিয়েবলের মধ্যে পার্থক্য করতে দেয়। অবশেষে, অপ্রত্যক্ষ রেফারেন্সিং , @প্রতীক সহ উপস্থাপিত , একটি পরিবর্তনশীল তৈরি করে (যদি এটি ইতিমধ্যে বিদ্যমান না থাকে) এবং প্রদত্ত সুযোগের মধ্যে ভেরিয়েবল অবজেক্টটি প্রদান করে। এই (যেমন আপনি একটি লুপ পরিবর্তনশীল তৈরি করার অনুমতি দেয় iমধ্যে for i in range(...))।

আসল সমাধান কীভাবে কাজ করে

নিখরচায় কোডটি এখানে:

n = elem = $Input;
var = 0;
while = While[{
	mod = Modulo[$elem];
	Not[mod[1]];
}];
while = while[{
for = For[4];
for = for[@index];
for = for[{
	Print[$elem];
	equal = Equal[$index];

	if = If[{ equal[1]; }];
	if = if[{ func = Times[$elem]; }];
	Do[$if];

	if = If[{ equal[2];}];
	if = if[{ func = Add[$elem];}];
	Do[$if];

	if = If[{ equal[3];}];
	if = if[{ func = Subtract[$elem];}];
	Do[$if];

	if=If[{ equal[4];}];
	if=if[{ func = Divide[$elem];}];
	Do[$if];

	elem = func[var = Increment[$var]];
	}];
	Do[$for];
}];
Do[$while];

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

আপনি দেখতে পাচ্ছেন, এটি তিনটি ভেরিয়েবল বরাদ্দ করে শুরু হয় n , eএবং aযা যথাক্রমে ইনপুট, ক্রমানুসারে পরিবর্তন উপাদান, এবং প্রতিটি নতুন উপাদানের জন্য পরিমার্জন সংখ্যা প্রতিনিধিত্ব করে। তারপরে আমরা কিছুক্ষণ লুপ তৈরি করি:

w=While[{m=Modulo[$e];Not[m[1]];}];

ধনুর্বন্ধনী ( {এবং }) কোডের একটি ব্লক সংজ্ঞায়িত করে , যেখানে ব্লকের চূড়ান্ত বিবৃতিটি লুপের জন্য শর্ত is এই ক্ষেত্রে, আমরা একটি আংশিক মডুলো ফাংশন সংজ্ঞা দিয়ে শুরু করি যা দ্বিতীয় যুক্তিতে গ্রহণ করবেm এবং ফিরে আসবে e % m। আমরা তখন সাথে এই আংশিক ফাংশন কল1 তার দ্বিতীয় যুক্তি হিসাবে, ফিরে 0পূর্ণসংখ্যার জন্য এবং ভাসমানগুলির জন্য একটি শূণ্য পূর্ণসংখ্যার ger এরপরে আমরা ম্যাপিং এর যৌক্তিকতাটি গণনা করি না01 এবং এন0,এন0

এরপরে আমরা লুপের দেহের সমন্বয়ে নিখুঁত এককথায় আসি:

w=w[{f=For[4];f=f[@x];f=f[{Print[$e];q=Equal[$x];i=If[{q[1];}];i=i[{k=Times[$e];}];Do[$i];i=If[{q[2];}];i=i[{k=Add[$e];}];Do[$i];i=If[{q[3];}];i=i[{k=Subtract[$e];}];Do[$i];i=If[{q[4];}];i=i[{k=Divide[$e];}];Do[$i];e=k[a=Increment[$a]];}];Do[$f];}];

এই লুপের প্রাথমিক অংশটি লুপের জন্য যা পুনরাবৃত্তি হয় 4উইন্ড লুপের প্রতিটি পুনরাবৃত্তির বারবার একটি পুনরাবৃত্তির পরিবর্তনশীল থাকে xএবং এতে থাকে:

Print[$e];
q=Equal[$x];
i=If[{q[1];}];i=i[{k=Times[$e]    ;}];Do[$i];
i=If[{q[2];}];i=i[{k=Add[$e]      ;}];Do[$i];
i=If[{q[3];}];i=i[{k=Subtract[$e] ;}];Do[$i];
i=If[{q[4];}];i=i[{k=Divide[$e]   ;}];Do[$i];
e=k[a=Increment[$a]];

প্রথম বিবৃতিটি ক্রমের প্রতিটি পুনরাবৃত্তি পরিবর্তন করার আগে মুদ্রণ করে। এরপরে আমরা লুপ ভেরিয়েবলের সাথে সাম্যতা যাচাই করার জন্য একটি আংশিক ফাংশন তৈরি করি xএবং বিবৃতি যদি চারটি হয়। প্রতিটি বিবৃতি চেক যদি xহয় যথাক্রমে 1, 2, 3 বা 4 সমান, এবং তারপর নির্ধারণ kপ্রতিটি ফাংশন *, +, -এবং /, তাহলে এটি একটি আংশিক ফাংশন মধ্যে তোলে সঙ্গে eতার আর্গুমেন্ট হিসাবে। শেষ পর্যন্ত, আমরা এটির দ্বিতীয় যুক্তি, এবং বৃদ্ধি হিসাবে চালানোর eজন্য নির্ধারিত করি ।kaa


2

রুবি , 52 বাইট

->n{i=0.0;n=[p(n)/i+=1,n*i,n+i,n-i][i%4]until 0<n%1}

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


2 বাইট সংরক্ষণ করুন: i=0এবং ফাংশনে যুক্তি হিসাবে একটি ফ্লোট ব্যবহার করুন।
জিবি

@ জিবি সুন্দর, ধন্যবাদ আমাদের কি ইনপুটটি ভাসমান হতে প্রয়োজন?
মনিকা iamnotmaynard



2

TI83 / 84 বেসিক, 69 বাইট

1→A
DelVar L1Prompt N
Repeat fPart(N
N→L1(A
NA-1→O
augment(L1,{NA,Ans+A+2,Ans→L1
O/(A+3→N
A+4→A
End
Disp L1

আমরা A তে একটি কাউন্টার সেট আপ করেছি এবং L1 সাফ করুন যাতে আমরা এটি ক্রমটি ট্র্যাক করতে ব্যবহার করতে পারি। আমরা তারপরে পুনরাবৃত্তি করি যতক্ষণ না বিভাগের পদক্ষেপটি ভগ্নাংশ তৈরি করে। লুপের ভিতরে আমরা প্রথমে N কে তালিকায় রাখি। তালিকার শেষে বা একটি খালি তালিকার শেষে একটি উপাদানকে সংরক্ষণ করা সেই উপাদানটি তৈরি করে, সুতরাং এটি একটি স্টোর উভয়ই বিভাগের ফলাফল যুক্ত করে যখন এটি কোনও ভগ্নাংশ সৃষ্টি করে না এবং প্রথম পাসের সময় তালিকার সূচনা করে। তারপরে আমরা ক্রমটির পরবর্তী 3 টি শর্ত যুক্ত করতে বর্ধন করি। গণিতটি A4k + 3 শব্দটি ভেরিয়েবল O তে গণনা করে এবং তারপরে A4k + 2 এবং A4k + 4 কে O বন্ধ করে বেজ করে smaller তারপরে আমরা পুনরাবৃত্ত চেকের জন্য N পুনরায় সেট করতে আলাদাভাবে বিভাগ করি এবং 4 থেকে A যুক্ত করি we

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


1

কাঠকয়লা , 29 বাইট

NθW¬﹪θ¹«Iθ⸿≔§⟦∕θⅉ×θⅉ⁺θⅉ⁻θⅉ⟧ⅉθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

Nθ

প্রাথমিক মান ইনপুট করুন।

W¬﹪θ¹«

মানটি আর পূর্ণসংখ্যা না হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

Iθ⸿

মানটি নিজস্ব লাইনে মুদ্রণ করুন।

≔§⟦∕θⅉ×θⅉ⁺θⅉ⁻θⅉ⟧ⅉθ

চারটি উপলব্ধ গাণিতিক ক্রিয়াকলাপ গণনা করুন এবং বর্তমান আউটপুট লাইন সংখ্যার উপর নির্ভর করে সঠিকটি নির্বাচন করুন।


1

পাইথন 3 , 78 76 বাইট

f=lambda n:n[-1]%1and n[:-1]or f(n+[eval(f"n[-1]{'/*+-'[len(n)%4]}len(n)")])

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

1 টি আইটেমের তালিকা হিসাবে ইনপুট নেয় এবং ক্রমটির পরবর্তী আইটেমটি অ-পূর্ণসংখ্যার পর্যন্ত পুনরাবৃত্তভাবে সংযোজন করে।

তালিকার হিসাবে ইনপুট নেওয়ার অনুমতি নেই এমন ক্ষেত্রে, এখানে খুব দ্রুত প্যাচ করা সংস্করণ দেওয়া হয়েছে যা ইনপুট হিসাবে ইনপুট নেয়।

পূর্ণসংখ্যা হিসাবে ইনপুট, ১০২ বাইট

f=lambda n:type(n)==int and f([n])or n[-1]%1and n[:-1]or f(n+[eval(f"n[-1]{'/*+-'[len(n)%4]}len(n)")])

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

+2 বাইটস রিকার্সিভ ফাংশনটির নাম ভুলে যাওয়ার
জন্য আপনাকে ধন্যবাদ ... -4 বাইট জিতসকে ধন্যবাদ


1
চমৎকার পন্থা! যেহেতু আপনার ফাংশন পুনরাবৃত্ত হয় তাই এটি বেনামে থাকতে পারে না। f=আপনার আপনার মূল কোডটি অন্তর্ভুক্ত করা উচিত । যাইহোক, আপনি এছাড়াও 4 বাইট সংরক্ষণ যেহেতু করতে n[-1]এবং len(n)প্রয়োজন না ধনুর্বন্ধনী হতে। এটি অনলাইন চেষ্টা করুন!
জিতসে

পূর্ণসংখ্যার চেয়ে তালিকাটি নেওয়ার বিষয়ে নিশ্চিত নই (আমি ওপি জিজ্ঞাসা করার পরামর্শ দিই), তবে n[:-(n[-1]%1>0)]or f...একটি বাইট বাঁচাতে পারি
জোনাথন অ্যালান

1

পল্লব , 164 বাইট

ঠিক আছে, এটি লিখতে আসলে ভয়াবহ ভয়ঙ্কর ছিল।

সীমাবদ্ধতা:

  • না returns ! আপনি হয় আউটপুট না আউটপুট না
  • কোন whileলুপ নেই । আপনার অবশ্যই পুনরাবৃত্তি বা কিছুই ব্যবহার
  • আউটপুট করার সহজ উপায় নেই! আপনাকে প্রতিবার আউটপুট পুনরাবৃত্তি করতে হবে
  • আপনি ব্যবহার না করে ভেরিয়েবলকে কোনও মান দিতে পারবেন না set ট্যাগটি
  • লুপ থেকে বেরিয়ে আসার সহজ কোনও উপায় নেই। কোন ব্যাপার break, continue, gotoবা অনুরূপ। এটি একটি লুপ ব্যবহার করা অসম্ভব করে তোলে।
  • এখানে কেবল 1 টি লুপ রয়েছে: for ... in ....এবং এটি অ্যারেতে সমস্ত উপাদানগুলির উপরে লুপ করে, থামার কোনও উপায় ছাড়াই।

এই সমস্ত কোড তৈরি!
আরে, আমি এটিকে জাভা উত্তরের চেয়েও দীর্ঘ করে দিয়েছি!
এটি @ আরনাউল্ডের জাভাস্ক্রিপ্ট উত্তর হিসাবে দীর্ঘ ! ... সমস্ত 3 বিকল্প সম্মিলিত সঙ্গে।

কোডটি এখানে:

{%macro a(b,n=1)%}{{n<2?b}}{%set b=b*n%},{{b}}{%set b=b+n+1%},{{b}}{%set b=b-(n+2)%},{{b}}{%set b=b/(n+3)%}{%if(b//1)==b%},{{b~_self.a(b,n+4)}}{%endif%}{%endmacro%}

আপনি https://twigfiddle.com/zw5zls এ চেষ্টা করতে পারেন


ব্যবহারবিধি:

কেবল ফাইলটি আমদানি করুন এবং প্রথম ম্যাক্রো কল করুন।

{% import 'file.twig' as a %}

{{ a.a(21) }} {# 21,21,23,20,5,25,31,24,3,27,37,26 #}

ব্যবহারযোগ্য অ্যারে রাখতে, আপনি এটি করতে পারেন a.a(21)|split(',')


Ungolfed:

{% macro calc(number, index = 1) %}
    {% if index < 2 %}
        {{ number }}
    {% endif %}

    {% set number = number * index %},{{ number }}
    {% set number = number + index + 1 %},{{ number }}
    {% set number = number - (index + 2) %},{{ number }}
    {% set number = number / (index + 3) %}

    {#
        verifies if it is an integer.
        this is done with an integer division with 1 and compare with itself
        if both values are the same, the number is an integer
        otherwise, it is a floating-point number
    #}
    {% if (number // 1) == number %}
        ,{{ number ~ _self.calc(number, index + 4) }}
    {% endif %}
{% endmacro %}

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

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