বিপরীত কোল্টজ কনজেকচার 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+x2S=[3x+1,x2]

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

f(x)xx

+?x+?xxxx0$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.