জাগলার ক্রম আউটপুট


18

বাজিকর ক্রম নিম্নরূপ বর্ণনা করা হয়েছে। একটি 1 ইনপুট দিয়ে শুরু করে , পরবর্তী শব্দটি পুনরাবৃত্ত সম্পর্কের দ্বারা সংজ্ঞায়িত করা হয়

ক্রমটি 1 এ পৌঁছালে সমাপ্ত হয়, পরবর্তী সমস্ত পদগুলি তখন 1 হবে।

কার্য

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

পরীক্ষার মামলা

Input: output
2: 2, 1
3: 3, 5, 11, 36, 6, 2, 1
4: 4, 2, 1
5: 5, 11, 36, 6, 2, 1

এটি একটি কোড গল্ফ। বাইটস মধ্যে সংক্ষিপ্ত কোড।


3
আমি প্রথম অমূল্যগুলির জন্য থামানোর জন্য কয়েকটি ধাপ স্নিপড এবং গণনা করেছি ~5.6*10^7(এগুলি এখনও অবধি থামে)।
মাইকেল ক্লেইন

আমাকে কোলাটজ অনুমানের স্মরণ করিয়ে দেয় (এখনও অমীমাংসিত নয়)
ওয়িম

@ উইম হ্যাঁ, এটির সাথে খুব মিল।
সিড্রাস

উত্তর:


8

জেলি , 12 11 10 বাইট

*BṪ×½Ḟµ’п

1 বাইট বন্ধ করে গল্ফ করার জন্য @ স্প3000 কে ধন্যবাদ!

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

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

*BṪ×½Ḟµ’п    Main link. Input: n

*B            Elevate n to all of its digits in base 2.
  Ṫ           Extract the last power.
              This yields n ** (n % 2).
   ×½         Multiply with sqrt(n). This yields n ** (n % 2 + 0.5).
     Ḟ        Floor.

      µ       Push the previous chain on the stack and begin a new, monadic chain.
        п    Repeat the previous chain while...
       ’        n - 1 is non-zero.
              Collect all intermediate results in an array.

জিজ্ঞাসা করতে আমি প্রায় ভয় পাচ্ছি, যেহেতু পোস্টারটির 87k খ্যাতি রয়েছে, তবে এটি কি 10 বাইটে প্রতিনিধিত্ব করা সত্যিই সম্ভব? আপনি 10 টি অক্ষর ব্যবহার করছেন, তবে আপনি কি কেবলমাত্র 256 টি সংমিশ্রণে এই খুব গুরূত্বপূর্ণ অক্ষরগুলি ফিট করতে পারেন? আমার বর্ণমালাতে অক্ষরগুলি যুক্ত করার জন্য first, not, Ð আমার প্রথম পছন্দ বলে মনে হবে না, কেবল আমার 256 টি জায়গা পূরণ করার কথা বিবেচনা করে ...
আন্নামাস

1
@ অ্যাননামাস জেলি একটি কাস্টম কোড পৃষ্ঠা ব্যবহার করে যা 256 টি অক্ষরকে প্রতিটি সিংল বাইট হিসাবে বোঝে প্রতিটি এনকোড করে।
ডেনিস

1
আমি দেখি! ধন্যবাদ। বিটিডব্লিউ, আমি আপনার টেবিলে একটি বাগ পেয়েছি, অক্ষর 20 (আমি এটি একটি স্থান বলে ধরে নিচ্ছি, এটি যদি "বাগ" না হয় তবে এটি নির্বিঘ্নে স্থানটি মুছে ফেলা হয়, আপনার ব্যবহার করা উচিত & nbsp; পরিবর্তে.
অ্যাননামাস

@ অ্যাননামাস হ্যাঁ, এটি কিছুটা অদ্ভুত লাগছিল। টেবিলটি অনুলিপি করার কোনও প্রচেষ্টা ভেঙে <code> </code>যাওয়ায় আমি এনবিএসপি ব্যবহার করতে চাইনি, তবে ব্যাকটিকগুলির পরিবর্তে একটি আসল এসপি চরিত্র প্রদর্শিত হবে বলে মনে হচ্ছে। যে ইশারা জন্য ধন্যবাদ।
ডেনিস

10

জুলিয়া, 64 50 48 42 32 30 বাইট

g(x)=[x;x<3||g(x^(x%2+.51)]

এটি একটি পুনরাবৃত্ত ফাংশন যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি ভাসমান অ্যারে প্রদান করে।

সিকোয়েন্সের পরবর্তী টার্মের সাথে ইনপুটটি কনটেনেট করে আমরা একটি অ্যারে তৈরি করি , এর সমতা এর যোগফলের সাথে 1/2 হিসাবে পাওয়ার হিসাবে এক্স হিসাবে গণনা করি । এটি আমাদের x 1/2 বা x 1 + 1/2 দেয় = x 3/2 দেয় । 1 দ্বারা পূর্ণসংখ্যা বিভাগ মেঝে পায়। কন্ডিশন x <3 টি সত্য হলে, চূড়ান্ত উপাদানটি একটি সংখ্যাসূচক মানের পরিবর্তে বুলিয়ান হবে, তবে যেহেতু অ্যারেটি টাইপ নয় Any, তাই এটি বাকি অ্যারের মতো একই ধরণের রয়েছে।

ডেনিসকে 14 বাইট সংরক্ষণ করা!


জুলিয়া ইন্টারপ্রেটার কি আইএসও 8859-1 এ সোর্স কোড হ্যান্ডেল করতে পারে? তাহলে পূর্ণসংখ্যা বিভাগটি কেবল একটি একক বাইট হবে be
মার্টিন এন্ডার

@ মার্টিনবাটনার না, আমি এর আগেও চেষ্টা করে দেখেছি এবং এটি বেশ উন্মাদ হয়েছে। জুলিয়ার পার্সার ইউটিএফ -8 ধরেছে।
অ্যালেক্স এ।

8

জাভাস্ক্রিপ্ট (ES7), 45 33 বাইট

f=n=>n<2?n:n+","+f(n**(.5+n%2)|0)

ব্যাখ্যা

পুনরাবৃত্তি পদ্ধতির। কমা দ্বারা পৃথক হওয়া সংখ্যার স্ট্রিং প্রদান করে।

f=n=>
  n<2?n:          // stop when n == 1
  n               // return n at the start of the list
  +","+f(         // add the rest of the sequence to the list
    n**(.5+n%2)|0 // juggler algorithm
  )

পরীক্ষা

** ব্রাউজারের সামঞ্জস্যের জন্য পরীক্ষায় ব্যবহৃত হয় না।


1
আমি নিশ্চিত ইচ্ছুক **সমস্ত ব্রাউজারে সমর্থিত ছিল।
ইটিএইচ প্রডাকশনগুলি

@ETH প্রোডাকশনগুলি আমি নিশ্চিত যে ** সি # তে ইচ্ছাকে সমর্থন করা হয়েছিল।
অলয়েসডজি বলেছেন মোনিকা

7

গণিত, 40 39 বাইট

1 বাইট সংরক্ষণের জন্য মার্টিন বাটনারকে ধন্যবাদ।

NestWhileList[⌊#^.5#^#~Mod~2⌋&,#,#>1&]&

পরীক্ষা ক্ষেত্রে

%[5]
(* {5,11,36,6,2,1} *)

6

পাইথ, 14 12 বাইট

.us@*B@N2NNQ

প্রদর্শন

আমরা ক্রমহ্রাসমান হ্রাস দিয়ে শুরু করি, .u , যা এই ক্ষেত্রে ইনপুট থেকে শুরু হয় এবং ফলাফল পুনরাবৃত্তি না হওয়া অবধি কোনও ফাংশন প্রয়োগ করে, যার সময়ে এটি মধ্যবর্তী ফলাফলগুলির সমস্ত ফলাফলকে আউটপুট করে।

ফাংশনটি পূর্বের মান হিসাবে গ্রহণ করে N। এটি এর স্কোয়ার রুটটি দিয়ে শুরু করে @N2। এর পরে, এটি দ্বারা গুণ উপর যে মান দ্বিখণ্ডিত Nসঙ্গে *B ... N। এটি তালিকা তৈরি করে [N ** .5, (N ** .5) * N], এমনকি সমতুল্য এবং বিজোড় মামলার জন্য অদম্য ফলাফল। এরপরে, উপযুক্ত অনাবৃত ফলাফল নির্বাচন করে তালিকাতে তালিকাবদ্ধ করে @ ... N। পাইথের যেহেতু মডিউলার ইনডেক্সিং রয়েছে, তাই কোনও সীমার ত্রুটি নিক্ষেপ করা হয় না। অবশেষে, ফলাফলটি মেঝেতে সজ্জিত s


6

এমএটিএল, 13 12 বাইট

`tt2\.5+^ktq

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

ব্যাখ্যা

`     % do...while loop
tt   % duplicate top of stack twice, takes implicit input on first iteration
2\    % take a_k mod 2
.5+^  % adds 0.5, to give 1.5 if odd, 0.5 if even, and takes a_k^(0.5 or 1.5)
kt    % Rounds down, and duplicates
q     % Decrement by 1 and use for termination condition---if it is 0, loop will finish

একটি বাইট সংরক্ষণ করার জন্য লুইস ধন্যবাদ!


floorফাংশন পরিবর্তন করা হয়েছে k, তাই আপনি যে ব্যবহার করতে পারেন পরিবর্তে Zo1 বাইট সংরক্ষণ করুন। (এই পরিবর্তনের জন্য দুঃখিত; আপনি এখানে প্রকাশের সংক্ষিপ্তসারগুলি দেখতে পারেন )
লুইস মেন্ডো

ওহ শান্ত, আমাকে জানানোর জন্য ধন্যবাদ!
ডেভিড

5

মিনকোলাং 0.15 , 25 বাইট

ndN(d$7;r2%2*1+;YdNd1=,).

এখানে চেষ্টা করুন!

ব্যাখ্যা

n                            Take number from input => n
 dN                          Duplicate and output as number
   (                         Open while loop
    d                        Duplicate top of stack => n, n
     $7                      Push 0.5
       ;                     Pop b,a and push a**b => n, sqrt(n)
        r                    Reverse stack => sqrt(n), n
         2%                  Modulo by 2
           2*                Multiply by 2
             1+              Add 1 => sqrt(n), [1 if even, 3 if odd]
               ;             Pop b,a and push a**b => sqrt(n)**{1,3}
                Y            Floor top of stack
                 dN          Duplicate and output as number
                   d1=,      Duplicate and => 0 if 1, 1 otherwise
                       ).    Pop top of stack and end while loop if 0, then stop.

3

টিএসকিউএল, 89 বাইট

ইনপুট প্রবেশ করে @N:

DECLARE @N INT = 5;

কোড:

WITH N AS(SELECT @N N UNION ALL SELECT POWER(N,N%2+.5) N FROM N WHERE N>1)SELECT * FROM N

3

এপিএল, 28 24 16 বাইট

{⌊⍵*.5+2|⎕←⍵}⍣=⎕

এটি এমন একটি প্রোগ্রাম যা কোনও পূর্ণসংখ্যা গ্রহণ করে এবং ধারাবাহিক আউটপুটগুলি পৃথক লাইনে মুদ্রণ করে।

ব্যাখ্যা:

{           }⍣=⎕   ⍝ Apply the function until the result is the input
 ⌊⍵*.5+2|⎕←⍵       ⍝ Print the input, compute floor(input^(input % 2 + 0.5))

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

ডেনিসের জন্য 8 টি বাইট সংরক্ষণ করা!


2

জাভা 7, 83 71 বাইট

void g(int a){System.out.println(a);if(a>1)g((int)Math.pow(a,a%2+.5));}

আমি প্রথমে একটি সাধারণ forলুপ ব্যবহার করেছি , তবে এটি সঠিকভাবে চালিত করার জন্য আমাকে হুপসের মধ্য দিয়ে ঝাঁপিয়ে পড়তে হয়েছিল। পরিবর্তে পুনরাবৃত্তি করার জন্য ব্যবহারকারী 1১6565৫ এর ধার ধার করে চুরি করার পরে , আমি এটি বারো বাইটে নামলাম


2

হাস্কেল, 70 বাইট

হাস্কেলের অভ্যন্তর sqrtঅন্তর্নির্মিত নেই, তবে আমি মনে করি এর চেয়ে আরও ছোট কিছু হতে পারে floor.sqrt.fromInteger

s=floor.sqrt.fromInteger
f n|odd n=s$n^3|1<2=s n
g 1=[1]
g n=n:g(f n) 

2

ওরাকল এসকিউএল 11.2, 128 বাইট

WITH v(i)AS(SELECT :1 FROM DUAL UNION ALL SELECT FLOOR(DECODE(MOD(i,2),0,SQRT(i),POWER(i,1.5)))FROM v WHERE i>1)SELECT i FROM v;

আন golfed

WITH v(i) AS
(
  SELECT :1 FROM DUAL
  UNION ALL
--  SELECT FLOOR(POWER(i,0.5+MOD(i,2))) FROM v WHERE i>1
  SELECT FLOOR(DECODE(MOD(i,2),0,SQRT(i),POWER(i,1.5))) FROM v WHERE i>1 
)
SELECT * FROM v;

এমওডিকে (i, 2) .5 যুক্ত করা সংক্ষিপ্ত তবে পাওয়ার (2, .5) সহ একটি বাগ রয়েছে:

SELECT POWER(4,.5), FLOOR(POWER(4,.5)), TO_CHAR(POWER(4,.5)) FROM DUAL

দেয়

2   1   1,99999999999999999999999999999999999999

2

আর, 54 51 বাইট

z=n=scan();while(n>1){n=n^(.5+n%%2)%/%1;z=c(z,n)};z

প্ল্যানাপাসকে ধন্যবাদ 3 বাইট সংরক্ষণ করা হয়েছে।


দেওয়া সমস্ত এন ইতিবাচক যে, এক খাটো করতে পারেন floor(n^(.5+n%%2))থেকে n^(.5+n%%2)%/%1আমি মনে করি। তবুও +1।
প্ল্যানাপাস


2

পাইথন 3, 57 , 45 , 43 , 41 বাইট

@ মঠমন্ডনের পরামর্শ সহ আরও ভাল সমাধান

def a(n):print(n);n<2or a(n**(.5+n%2)//1)

এই পদ্ধতিটি প্রতিটি লাইনে একটি নতুন লাইনে মুদ্রণ করবে

পূর্ববর্তী সমাধান: এক্সনোরের সুপারিশের পরে 43 বাইটে কেটে নিন

a=lambda n:[n][:n<2]or[n]+a(n**(n%2+.5)//1)

আপনি a(10)কোনটি দিয়ে উপরোক্ত কল করতে পারেন returns[10, 3.0, 5.0, 11.0, 36.0, 6.0, 2.0, 1.0]

উপরেরগুলি ভাসমান হিসাবে মানগুলি আউটপুট করবে। আপনি যদি তাদের পূর্ণসংখ্যা হিসাবে দেখতে চান, তবে আমরা কেবলমাত্র 43 বাইটের জন্য অতিরিক্ত 2 বাইট যুক্ত করতে পারি:

def a(n):print(n);n<2or a(int(n**(.5+n%2)))

বেস কেসটি করার দ্বারা [n][:n<2]orবা 1/n*[n]orপূর্ণসংখ্যার কেসটি পরিচালনা করা কিছুটা ছোট orter
xnor

পাইথন 2 ব্যবহার করে আপনি এটিকে 41 বাইটে নামিয়ে আনতে পারেন def j(n):print n;n-1and j(n**(.5+n%2)//1)। (বা পাইথন 3 এ, def j(n):print(n);n-1and j(n**(.5+n%2)//1)42 বাইট রয়েছে)) এটি তালিকার শর্তগুলি সংগ্রহ করার পরিবর্তে শব্দক্রম অনুসারে ক্রম শব্দটি মুদ্রণ করবে।
mathmandan

আমি এর n<2orপরিবর্তে আরও একটি বাইট অপসারণ করতে পারিn-1and
ক্যামেরন আভিক

2

টিআই-বেসিক, 30 বাইট

Prompt A
Repeat A=1
Disp A
int(A^(remainder(A,2)+.5->A
End
1

22 টি বাইটস যদি আপনি আনসার থেকে ইনপুট নেন তবে এর Repeat Ans=1সাথে প্রতিস্থাপন করুন While log(Ansএবং ব্যবহার করুন √(Ans)Ans^remainder(Ans,2
lirtosiast

1

জাভাস্ক্রিপ্ট ES6, 109 102 বাইট

s=>(f=n=>n==1?n:n%2?Math.pow(n,3/2)|0:Math.sqrt(n)|0,a=[s],eval("while(f(s)-1)a.push(s=f(s))"),a+",1")

আমি জানি এটি গল্ফ করা যেতে পারে। কমা-বিভাজিত সংখ্যার একটি স্ট্রিং প্রদান করে।


1

সি ++, 122 বাইট

#include <iostream>
void f(int n){int i;while(n^1){std::cout<<n<<',';for(i=n*n;i*i>(n%2?n*n*n:n);i--);n=i;}std::cout<<1;}


1

রেটিনা, 144 বাইট

ইনপুট এবং আউটপুট অবিচ্ছিন্ন।

দ্বিতীয় থেকে শেষ লাইনটিতে একটি স্থান রয়েছে এবং দুটি মাঝের রেখা এবং শেষ লাইনটি খালি রয়েছে।

{`(\b|)11+$
$&¶$&
m-1=`^(?=^(11)*(1?)).*$
$&,$2
(1+),1$
$1;,
1(?=1*;)
$%_
1+;
$%_
;|,

m-1=`^
1:
+`(1+):(11\1)
1 $2:
1+:$|:1+

-1=`(1+\b)
$#1


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

ব্যাখ্যা

{`(\b|)11+$                 # Loop, Duplicate last line
$&¶$&
m-1=`^(?=^(11)*(1?)).*$     # Append ,n%2 to that line (number modulo 2)
$&,$2
(1+),1$                     # Cube that number if odd
$1;,
1(?=1*;)
$%_
1+;
$%_
;|,                         # (Last stage of cubing number)

m-1=`^                      # Integer square root of that number, 
1:                          #   borrowed and modified from another user's answer
+`(1+):(11\1)
1 $2:
1+:$|:1+

-1=`(1+\b)
$#1


ডিজিটাল ট্রমা দ্বারা রেটিনাতে পূর্ণসংখ্যা বর্গমূল root


1

সি, 64 63 61 বাইট

t;q(n){for(;!t;n=pow(n,.5+n%2))printf("%d%c ",n,n^1?44:t++);}

2
আপনি বা (যদি সি এটি অনুমতি দেয়) n%2?1.5:0.5দিয়ে প্রতিস্থাপন করতে পারেন। যদি এটি সত্য হয় তবে 1 হয়, অন্যথায় 0n%2+0.5.5+n%2n%2n%2
অ্যালোসডজি বলেছেন রিনস্টেট মনিকা

0

টিআই বেসিক, 43 বাইট

আমি একটি টমাস কোওয়া টানছি এবং আমার মোবাইলে এটির উত্তর দিচ্ছি।

Input N
Repeat N=1
Disp N
remainder(N,2->B
If not(B:int(sqrt(N->N
If B:int(N^1.5->N
End
1

sqrtআপনার ক্যালকুলেটরটিতে প্রকৃত প্রতীক দিয়ে প্রতিস্থাপন করুন। সংখ্যার একটি লাইনফিড বিচ্ছিন্ন তালিকা প্রদর্শন করে, যা যুক্তিসঙ্গত ফর্ম্যাট।


আপনি এই আরও গল্ফ করতে পারেন।
lirtosiast

@ থমাসকওয়া হ্যাঁ, আপনি সম্ভবত ঠিক বলেছেন। আমি কিছুটা জন্য এটি সম্পর্কে চিন্তা করব।
কনর ও'ব্রায়েন

0

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

নামক একটি জেনারেটর j। ব্যবহার করতে, সেট করুন a = j(<your value>);। অনুক্রমের পরবর্তী মানটি দেখতে, প্রবেশ করান a.next().value

function*j(N){for(yield N;N-1;)yield N=(N%2?Math.pow(N,3/2):Math.sqrt(N))|0}

Ungolfed:

function* juggler(N){
    yield N;
    while(N!=1){
        N = Math.floor(N % 2 ? Math.pow(N,3/2) : Math.sqrt(N));
        yield N;
    }
}

0

এফ # 77 বাইট

1 এ শেষ হয় না, তবে চলছে।

let j=Seq.unfold(fun x->Some(x,floor(match x%2. with 0.->x**0.5|1.->x**1.5)))

ব্যবহার:

j 3.;;
> val it : seq<float> = seq [3.0; 5.0; 11.0; 36.0; ...]

সংস্করণ যা আসলে 1, 100 বাইটে শেষ হয়

let j=Seq.unfold(fun x->if x=1. then None else Some(x,floor(match x%2. with 0.->x**0.5|1.->x**1.5)))

Ungolfed

let juggle input =
    let next x = 
        floor
            (match x % 2. with 
                | 0. -> x ** 0.5
                | 1. -> x ** 1.5
                | _ -> failwith "this should never happen") // addressing a compiler warning
    Seq.unfold (fun x -> if x = 1. then None else Some(x, next x)) input

0

পার্ল 5, 34 বাইট

-pEপরিবর্তে 33, যোগ 1-e

say;($_=int$_**($_%2+.5))-1&&redo

ব্যাখ্যা

প্রথমে স্ট্রিন থেকে ইনপুট সমান -pভেরিয়েবল সেট করে $_। তারপরে আমরা কোডের একটি ব্লক শুরু করব:

  1. sayকপি করে প্রিন্ট $_
  2. $_=int$_**($_%2+.5)ক্রিয়াকলাপের ক্রম ( অপারেটর অগ্রাধিকার ) এর কারণে {{এর মডেলো 2} + 0.5} power এর পাওয়ারের $_পূর্ণসংখ্যার অংশের সমান সেট করে । এই নিয়োগটি , এবং এর নতুন মান প্রদান করে returns$_$_$_
  3. (...)-1&&redoপরীক্ষাগুলি যে মান, বিয়োগ 1 ফিরে পেয়েছে। পার্থক্য 0 হয়, কিছুই করবেন না; অন্যথায়, এই ব্লকটি আবার করুন।

অবশেষে, -pপ্রিন্ট $_

সমান দৈর্ঘ্যের

এছাড়াও ব্যবহার করে -p

say()-($_=int$_**($_%2+.5))&&redo

এটি: প্রিন্ট $_; উপরোক্ত হিসাবে অ্যাসাইন; এর রিটার্ন মান say(যা 1), $_বিয়োগের নতুন মান 0 হয় কিনা তা পরীক্ষা করে এবং যদি তাই হয় তবে ব্লকটি আবার করা হয়; তারপর ছাপে $_শেষে।


0

ডিসি, 22 21 বাইট

[pd2%2*1+^vd1<F]dsFxn

ব্যাখ্যা:

[                # Begin macro definition
 p               # Peek at top of stack (print without popping, followed by newline)
 d               # Duplicate top of stack
 2%              # Mod 2: If even, 0; if odd, 1
 2*1+            # If even: 0*2+1==1; if odd: 1*2+1==3
 ^v              # Raise, then square root: equivalent to `^(0.5)' or `^(1.5)'
 d1<F            # If result is not 1, run macro again
]dsFx            # Duplicate macro, store as `F', execute
n                # Print the final "1"

একটি ত্রুটি রয়েছে: যখন ইনপুট থাকে 1, আউটপুট দুটি সকে নিয়ে থাকে 1

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