বিপরীত কোল্টজ কনজেকচার ure


13

আমি মনে করি কোলাটজ কনজেকচারটি ইতিমধ্যে সুপরিচিত। তবে আমরা যদি নিয়মগুলি উল্টে দেব?

পূর্ণসংখ্যা n> = 1 দিয়ে শুরু করুন।

নিম্নলিখিত পদক্ষেপগুলি পুনরাবৃত্তি করুন:

যদি n হল এমনকি , সংখ্যাবৃদ্ধি এটা 3 দ্বারা এবং 1 যোগ করুন।

যদি এন বিজোড় হয় তবে 1 টি বিয়োগ করুন এবং এটি 2 দ্বারা ভাগ করুন।

এটি 0 এ পৌঁছালে থামুন

পুনরাবৃত্তি সংখ্যা মুদ্রণ করুন।

পরীক্ষার কেস:

 1        => 1, 0
 2        => 2, 7, 3, 1, 0
 3        => 3, 1, 0
10        => 10, 31, 15, 7, 3...
14        => 14, 43, 21, 10, ...

নিয়মাবলী:

  • এই ক্রমটি প্রচুর সংখ্যার জন্য কাজ করে না কারণ এটি অসীম লুপে প্রবেশ করে। আপনার এই মামলাগুলি পরিচালনা করার দরকার নেই। উপরের পরীক্ষার কেসগুলি কেবল ছাপানোই যথেষ্ট।

  • আমি চালিয়ে যাওয়ার জন্য একটি বৈধ পূর্ণসংখ্যা দিতে 1 টি বিয়োগ করতে এবং দুটি দ্বারা বিভক্ত করার পরামর্শ দিয়েছি তবে এটি সেভাবে গণনা করার প্রয়োজন নেই। আপনি 2 দিয়ে বিভক্ত করতে পারেন এবং পূর্ণসংখ্যায় বা অন্য যে কোনও পদ্ধতিতে প্রত্যাশিত আউটপুট দেবে তা নিক্ষেপ করতে পারেন।

  • আপনার প্রাথমিক ইনপুটটিও মুদ্রণ করতে হবে।

  • আউটপুট পরীক্ষার কেস হিসাবে ফর্ম্যাট করা প্রয়োজন হয় না। এটি শুধু একটি প্রস্তাব ছিল। যাইহোক, পুনরাবৃত্ত আদেশ অবশ্যই সম্মান করা উচিত।

  • সবচেয়ে ছোট কোডটি জয়ী হয়।


9
যেহেতু এটি বেশ কয়েক ঘন্টা আপনার তৃতীয় প্রশ্ন, আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি স্যান্ডবক্সটি পরীক্ষা করুন , যেখানে আমরা সাধারণত প্রতিক্রিয়ার জন্য প্রশ্ন খসড়া পোস্ট করি এবং সেগুলি নকল নয় কিনা তা নিশ্চিত করে নিন।
— 4:38

আপনাকে @cairdcoinheringaahing ধন্যবাদ। আমি এই পৃষ্ঠা সম্পর্কে জানতাম না।
— এডুয়ার্ডো হয়েফেল

আমাদের কি 0শেষে প্রিন্ট করতে হবে?
— flawr

2
আপনি শেষ দুটি পরীক্ষার কেসটি প্রসারিত করতে চাইতে পারেন, যেহেতু সেগুলি দীর্ঘ নয়
— জো কিং

3
@ জোকিং আমি এটিকে সংকুচিত করেছি কারণ এটি অন্যান্য লাইন থেকে আউটপুট পুনরাবৃত্তি করে। আপনি 3 এ পৌঁছানোর সময়ে, আপনি যখন এটি থেকে শুরু করেন তখন এর একই আউটপুট থাকে। একই 10 বা অন্য কোনও সংখ্যার জন্য প্রযোজ্য।
— এডুয়ার্ডো হোফেল

উত্তর:


5

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

{$_,{$_%2??$_+>1!!$_*3+1}...0}

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

বেনামি কোড ব্লক যা একটি ক্রম ফেরায়।

ব্যাখ্যা:

{$_,{$_%2??$_+>1!!$_*3+1}...0}
{                            }   # Anonymous code block
   ,                     ...     # Define a sequence
 $_                              # That starts with the given value
    {                   }        # With each element being
     $_%2??     !!               # Is the previous element odd?
           $_+>1                 # Return the previous element bitshifted right by 1
                  $_*3+1         # Else the previous element multiplied by 3 plus 1
                            0    # Until the element is 0




2

পাইথন 2, 54 52 44 বাইট

n=input()
while n:print n;n=(n*3+1,n/2)[n%2]

-২ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ

অবশ্যই একটি দ্রুত উপায় থাকতে হবে। অদ্ভুতভাবে, যখন আমি একটি ল্যাম্বডা চেষ্টা করেছিলাম তখন এটি একই বাইকোয়েন্ট ছিল। আমি সম্ভবত হ্যালুসিনেট করছি।

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



@ মিঃ এক্সকোডার আহ, ধন্যবাদ
— কুইনটেক


যদিও 0এখন এটি print
— জো কিং

প্রকৃতপক্ষে, এখন আপনি 44 এ
— মিস্টার এক্সকোডার

2

হাস্কেল , 76 69 61 56 বাইট

আমার মনে হচ্ছে এটি অনেক দীর্ঘ। এখানে lবিপরীতমুখী-কোলাটজ ক্রমের একটি অসীম তালিকা তৈরি করে এবং প্রথম লাইনে বেনামী ফাংশনটি এটি সঠিক জায়গায় সরিয়ে দেয়।

@ ByrjanJohansen -5 বাইট জন্য ধন্যবাদ!

fst.span(>0).l
l r=r:[last$3*k+1:[div k 2|odd k]|k<-l r]

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


কোনও নেতিবাচক সংখ্যা নেই, তাই (>0)যথেষ্ট হওয়া উচিত। এছাড়াও একটি oddফাংশন আছে।
— janrjan জোহানসেন

@ আরজান জোহানসেন অনেক ধন্যবাদ!
— flawr


2

05 এ বি 1 ই , 15 14 বাইট

[Ð=_#Èi3*>ë<2÷

-1 বাইট ধন্যবাদ @ ম্যাজিকঅ্যাক্টোপাস ইউর্নকে ।

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

ব্যাখ্যা:

[             # Start an infinite loop
 Ð            #  Duplicate the top value on the stack three times
              #  (Which will be the (implicit) input in the first iteration)
  =           #  Output it with trailing newline (without popping the value)
   _#         #  If it's exactly 0: stop the infinite loop
     Èi       #  If it's even:
       3*     #   Multiply by 3
         >    #   And add 1
      ë       #  Else:
       <      #   Subtract 1
        2÷    #   And integer-divide by 2

[Ð=_#Èi3*>ë<2÷=পরিবর্তে সঙ্গে D,।
— ম্যাজিক অক্টোপাস উরান

@ ম্যাজিক অ্যাক্টোপাস উর্ন আহ, এটা ভুলে যাওয়া বেশ খারাপ ছিল .. ধন্যবাদ! :)
— কেভিন ক্রুইজসেন

2

1
আপনার পারমালিঙ্কটি কাজ করছে বলে মনে হচ্ছে না। প্রোগ্রামটি কেবল ইনপুট এবং স্টলগুলি মুদ্রণ করে।
— ডেনিস

হ্যাঁ আপনি ঠিক. আমি "তাদের" কে সর্বশেষ সংস্করণটি
— টানতে বলব

আমি গল্ফিং ভাষার তালিকায় জেএএল যুক্ত করেছি । আমি কোনও তথ্য ভুল পেয়েছি কিনা দয়া করে আমাকে জানান :-)
— ইটিএইচ প্রডাকশনগুলি

@ ইথ প্রডাকশনগুলি আপনাকে অনেক ধন্যবাদ: ডিআই মনে করি আমি বলতে পারি যে বিশেষত্বটি হল ইউটিলিটি প্যাকেজ যা প্রোগ্রামারকে কোডটি সংকুচিত করতে সহায়তা করে, তবে কেবল এটিই আমি মার্চেন্ডাইজ করার চেষ্টা করছি।
— এডুয়ার্ডো হোফেল



1

ওল্ফ্রাম ভাষা (ম্যাথমেটিকা) , 35 বাইট

0<Echo@#&&#0[3#+1-(5#+3)/2#~Mod~2]&

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

0<Echo@# && ...&শর্ট সার্কিট মূল্যায়ন: এটি ইনপুট মুদ্রণ করে #, এটি ইতিবাচক কিনা তা পরীক্ষা করে এবং যদি তাই হয় তবে মূল্যায়ন করে ...। এই ক্ষেত্রে, ...হয় #0[3#+1-(5#+3)/2#~Mod~2]; যেহেতু #0(জিরোথ স্লট) নিজেই ফাংশন, তাই এটি একটি পুনরাবৃত্ত কল on 3#+1-(5#+3)/2#~Mod~2যা 3#+1কখন সমান হয় #এবং (#-1)/2কখন #বিজোড় to




1

ইমোজিকোড 0.5 , 141 বাইট

🐖🎅🏿🍇🍮a🐕😀🔡a 10🔁▶️a 0🍇🍊😛🚮a 2 1🍇🍮a➗a 2🍉🍓🍇🍮a➕✖️a 3 1🍉😀🔡a 10🍉🍉

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

🐖🎅🏿🍇
🍮a🐕      👴 input integer variable 'a'
😀🔡a 10      👴 print input int
🔁▶️a 0🍇      👴 loop while number isn’t 0
🍊😛🚮a 2 1🍇     👴 if number is odd
🍮a➗a 2       👴 divide number by 2
🍉
🍓🍇      👴 else
🍮a➕✖️a 3 1   👴 multiply by 3 and add 1
🍉
😀🔡a 10     👴 print iteration
🍉🍉


1

ম্যাথগল্ফ , 12 বাইট

{o_¥¿½É3*)}∟

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

ব্যাখ্যা

{             Start block of arbitrary length
 o            Output the number
  _           Duplicate
   ¥          Modulo 2
    ¿         If-else with the next two blocks. Implicit blocks consist of 1 operator
     ½        Halve the number to integer (effectively subtracting 1 before)
      É       Start block of 3 bytes
       3*)    Multiply by 3 and add 1
          }∟  End block and make it do-while-true

আমি ম্যাথগল্ফকে গল্ফিং ল্যাংগুলির তালিকায় যুক্ত করেছি
— ETH প্রোডাকশন

এটি যুক্ত করার জন্য ধন্যবাদ! আমার কাছে সবকিছু ঠিক দেখাচ্ছে।
— সর্বোচ্চ

1

x86 মেশিন কোড, 39 বাইট

00000000: 9150 6800 0000 00e8 fcff ffff 5958 a901  .Ph.........YX..
00000010: 0000 0074 04d1 e8eb 066a 035a f7e2 4009  ...t.....j.Z..@.
00000020: c075 dec3 2564 20                        .u..%d 

সমাবেশ (এনএএসএম সিনট্যাক্স):

section .text
	global func
	extern printf
func:					;the function uses fastcall conventions
	xchg eax, ecx			;load function arg into eax
	loop:
		push eax
		push fmt
		call printf	;print eax
		pop ecx
		pop eax
		test eax, 1	;if even zf=1
		jz even		;if eax is even jmp to even
		odd:		;eax=eax/2
			shr eax, 1
			jmp skip
		even:		;eax=eax*3+1
			push 3
			pop edx
			mul edx
			inc eax
		skip:
		or eax, eax
		jne loop	;if eax!=0, keep looping
	ret			;return eax
section .data
	fmt db '%d '

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


1

আর , 66 61 বাইট

-5 বাইট রইবার্ট এসকে ধন্যবাদ ifletse একত্রিত করতে ifএবং বন্ধনীগুলি সরানোর জন্য, এবং x! = 0 থেকে x> 0

print(x<-scan());while(x>0)print(x<-`if`(x%%2,(x-1)/2,x*3+1))

পরিবর্তে

print(x<-scan());while(x!=0){print(x<-ifelse(x%%2,(x-1)/2,x*3+1))}

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



0

পার্ল -মিন্টেজার -এনএলই, 39 বাইট

{say;$_=$_%2?$_/2:3*$_+1 and redo}say 0

0

++ , 38 35 33 বাইট যুক্ত করুন

D,f,@:,d3*1+$2/iA2%D
+?
O
Wx,$f>x

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

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

f(x)x

f(x)={xis even,3x+1xis odd,⌊x2⌋

f(x)S=[x]

dS=[x,x]3x+13*1+⌊x2⌋S=[3x+1,⌊x2⌋]

xSxx%2a%babS=[3x+1,⌊x2⌋,(x%2)]D(x%2)03x+1⌊x2⌋

f(x)xx

+?x+?xxxx≠0$f>xf(x)xx


শুধু বুঝতে হবে: ব্রেক লাইনটি কি কোডের অংশ? নাকি এটি কেবল আরও ভাল ব্যাখ্যার জন্য? আমি আসলে এই ভাষা জানি না।
— এডুয়ার্ডো হয়েফেল

@ এদুয়ার্ডো হোফেল ব্রেক লাইন?
— 21

নতুন ক্যারেক্টারগুলি সম্ভবত:
— লিন

0

রেটিনা 0.8.2 , 46 বাইট

.+
$*
{*M`1
^(..)+$
$&$&$&$&$&$&111
1(.*)\1
$1

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

.+
$*

অ্যানারিতে রূপান্তর করুন।

{

মান পরিবর্তন হওয়া বন্ধ হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

*M`1

দশমিক মানটি মুদ্রণ করুন।

^(..)+$
$&$&$&$&$&$&111

যদি এটি সমান হয় তবে 6 দিয়ে গুণ এবং 3 যোগ করুন।

1(.*)\1
$1

1 কে বিয়োগ করুন এবং 2 দ্বারা ভাগ করুন।

পূর্ববর্তী নিউলাইনটি এর ;আগে একটি যোগ করে দমন করা যেতে পারে {।




0

সি # (.নেট কোর) , 62 বাইট

a=>{for(;a>0;a=a%2<1?a*3+1:a/2)Console.Write(a+" ");return a;}

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

Ungolfed:

a => {
    for(; a > 0;                // until a equals 0
        a = a % 2 < 1 ?             // set a depending on if a is odd or even
                a * 3 + 1 :             // even
                a / 2                   // odd (minus one unnecessary because of int casting)
    )
        Console.Write(a + " "); // writes the current a to the console
    return a;                   // writes a to the console (always 0)
}


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