থু-মুরস ক্রমের পার্থক্যটি মুদ্রণ করুন


10

দ্রষ্টব্য, আমি যখন "নেগেট" বলি তখন আমার অর্থ সমস্তগুলি জিরো দিয়ে প্রতিস্থাপিত করুন (অর্থাত্ কিছুটা অবহেলা)

থু-মোর্স ক্রমটি 01101001 এর মতো চলে

আপনি যেভাবে এটি উত্পাদন করেন তা হ'ল:

0 থেকে শুরু করে যা বাকী রয়েছে তা নেগেট করুন এবং এটিকে শেষে যুক্ত করুন।

তো, নিও 0। এটিকে নেগেট করুন এবং এটিকে শেষ পর্যন্ত যুক্ত করুন -01

তারপরে এটি নিন এবং এটিকে অবহেলা করুন এবং এটিকে শেষ পর্যন্ত যুক্ত করুন - 0110

ইত্যাদি।

এর আর একটি আকর্ষণীয় সম্পত্তি হ'ল শূন্যগুলির মধ্যে দূরত্ব একটি "অযৌক্তিক" এবং অ-পুনরাবৃত্তি স্ট্রিং তৈরি করে।

তাই:

0110100110010110
|__|_||__||_|__|
 2  1 0 2 01 2          <------------Print this!

আপনি কি এমন একটি প্রোগ্রাম লিখতে পারেন যা ইনপুট এন হলে স্ট্রিংয়ের প্রথম এন অঙ্কটি মুদ্রিত হয়?

এটি কোড গল্ফ, তাই বাইটের সংক্ষিপ্ততম সংখ্যা!


6
আউটপুট জন্য একটি নির্দিষ্ট বেস প্রয়োজন হয় না লুপফোলি বলে মনে হচ্ছে। থ্যু-মুরস ক্রম নিজেই কাঙ্ক্ষিত আউটপুট, অবিচ্ছিন্ন এবং 0 বিভাজক হিসাবে।
ডেনিস

উত্তর:


2

জেলি, 9 বাইট

;¬$‘¡TI’ḣ

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

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

;¬$‘¡TI’ḣ  Main link. Argument: n

  $        Create a monadic chain that does the following to argument A (list).
 ¬         Negate all items of A.
;          Concatenate A with the result.
   ‘¡      Execute that chain n + 1 times, with initial argument n.
     T     Get all indices of truthy elements (n or 1).
      I    Compute the differences of successive, truthy indices.
       ’   Subtract 1 from each difference.
        ḣ  Keep the first n results.

4

পাইথন 3 2, 104 92 88 84 বাইট

এটি স্ক্র্যাচ থেকে একটি তিন্নি থিউ-মোর্স ক্রম তৈরির উপর ভিত্তি করে একটি দুর্দান্ত প্রাথমিক সমাধান। এই ক্রমটি জিজ্ঞাসিত ব্যক্তির অনুরূপ, যদিও অন্য কাউকে কেন এটি হবে তার আরও বিশদ ব্যাখ্যা লিখতে হবে। যাহা হউক, এই ক্রম শুধুমাত্র এই এক, একটি তুচ্ছ পরিবর্তন হয় A036580

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

n=input()
s="2"
while len(s)<n:s="".join(`[1,20,210][int(i)]`for i in s)
print s[:n]

3

জুলিয়া, 56 50 বাইট

n->(m=1;[m=[m;1-m]for _=0:n];diff(find(m))[1:n]-1)

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

আমরা একটি পূর্ণসংখ্যা দিয়ে শুরু দ্বারা বিট-আনা Thue-জলহস্তী ক্রম উৎপন্ন m = 1, তাহলে আমরা যোগ 1-mকরতে mএকটি অ্যারে হিসাবে n+1বার, যেখানে nইনপুট হয়। এটি আমাদের প্রয়োজনের তুলনায় আরও পদ তৈরি করে। তারপরে আমরা যেগুলি ব্যবহার করে তা সনাক্ত করি find(m), ব্যবহার করে ধারাবাহিক মানগুলির মধ্যে পার্থক্য পাই diffএবং 1 টি মৌলিক দিক দিয়ে বিয়োগ করি। ফলাফলযুক্ত nঅ্যারের প্রথম শর্তাদি নেওয়া আমাদের যা দেয় তা দেয়।

6 বাইট সংরক্ষণ করেছেন এবং ডেনিসকে ধন্যবাদ একটি সমস্যা স্থির করেছেন!


3

পাওয়ারশেল, 102 বাইট

filter x($a){2*$a+([convert]::toString($a,2)-replace0).Length%2}
0..($args[0]-1)|%{(x($_+1))-(x $_)-1}

সামান্য একটি পৃথক গণনার পদ্ধতি। পাওয়ারশেলের কাছে "এই অ্যারেতে সমস্ত সূচক পাওয়া যায় না যেখানে সেই সূচকের মান যেমন এবং এর সমান হয় " তাই আমাদের কিছুটা সৃজনশীল হওয়া দরকার।

এখানে আমরা A001969 ব্যবহার করছি , "তাদের বাইনারি সম্প্রসারণে 1s এর সমান সংখ্যার সংখ্যা", যা সম্পূর্ণ কাকতালীয়ভাবে থিউ-মোর্সের ক্রম অনুসারে 0 এর সূচকগুলি দেয়। ;-)

এই filterসংখ্যাটি গণনা করে। উদাহরণস্বরূপ, x 4দিতে হবে 9। তারপরে আমরা কেবল 0আমাদের ইনপুট থেকে লুপ করি $args[0], বিয়োগ করে 1কারণ আমরা শূন্য-সূচকযুক্ত এবং লুপের প্রতিটি পুনরাবৃত্তি পরবর্তী সংখ্যা এবং বর্তমান সংখ্যার মধ্যে পার্থক্য মুদ্রণ করে । পাইপলাইনে আউটপুট যুক্ত করা হয় এবং স্পষ্টভাবে নিউলাইনগুলি সহ আউটপুট।

উদাহরণ

PS C:\Tools\Scripts\golfing> .\print-the-difference-in-the-thue-morse.ps1 6
2
1
0
2
0
1

A001969 এর সাথে সম্পর্ক একটি দুর্দান্ত সন্ধান!
লুইস মেন্ডো

3

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

l=2:(([[0..2],[0,2],[1]]!!)=<<l)
(`take`l)

ব্যবহারের উদাহরণ: (`take`l) 7-> [2,1,0,2,0,1,2]

এটা একটি বাস্তবায়ন এর a036585_listথেকে A036585 নিচে স্থানান্তরিত 0, 1এবং 2। গল্ফিং: concat (map f l)হয় f =<< lএবং f 0=[0,1,2]; f 1=[0,2]; f 2=[1]হয় ([[0..2],[0,2],[1]]!!)

দ্রষ্টব্য: lঅসীম অনুক্রম। এটি প্রথম- nউপাদানগুলির বৈশিষ্ট্যটি প্রয়োগ করতে 10 বাইট বা প্রায় 25% লাগে ।



3

এমএটিএল , 14 11 বাইট

Q:qB!Xs2\dQ

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

তার উত্তরে @ টিমিমিডি দ্বারা চিহ্নিত হিসাবে , পছন্দসই ক্রমটি A001969 এর ক্রমাগত পার্থক্য দ্বারা দেওয়া হয়েছে । পরেরটি থু-মর্স সিকোয়েন্স প্লাস 2 * এন হিসাবে প্রাপ্ত হতে পারে । সুতরাং কাঙ্ক্ষিত ক্রমটি (থু-মুর্স ক্রমের ক্রমাগত পার্থক্য) প্লাস এক দ্বারা দেওয়া হয়েছে

অন্যদিকে, থিউ-মোর্স ক্রমটি এন = 0 থেকে শুরু করে, এন এর বাইনারি উপস্থাপনায় সংখ্যা হিসাবে প্রাপ্ত হতে পারে

Q:q    % take input n implicitly and generate row vector [0,1,...,n]
B!     % 2D array where columns are the binary representations of those numbers
Xs     % sum of each column. Gives a row vector of n+1 elements
2\     % parity of each sum
d      % consecutive differences. Gives a row vector of n elements
Q      % increase by 1. Display implicitly

আমি কি (থু-মোর্স ক্রমের ধারাবাহিক পার্থক্য) প্লাস 1 এ প্রথম বন্ধনীর অনুরোধ করতে পারি ?
ক্যালকুলেটরফলাইন

পছন্দ করুন সম্পন্ন
লুইস মেন্ডো


2

পাইথন, 69 বাইট

t=lambda n:n and n%2^t(n/2)
lambda n:[1+t(i+1)-t(i)for i in range(n)]

iএই ক্রম তম শব্দ 1+t(i+1)-t(i)যেখানে, tThue-জলহস্তী ফাংশন। কোডটি এটি পুনরাবৃত্তির সাথে প্রয়োগ করে, যা তার চেয়ে কম

t=lambda n:bin(n).count('1')%2

1

গণিত, 65 বাইট

SubstitutionSystem[{"0"->"012","1"->"02","2"->"1"},"0",#][[;;#]]&

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

যাই হোক না কেন, আমি এটির জন্য কেবল জাদুটি অন্তর্নির্মিত ব্যবহার করছি। আউটপুট একটি স্ট্রিং।


আমাদের কাছে এখন 4 টি গণিতের উত্তর রয়েছে: আমার আসল, অবিশ্বাস্য একটি (এটি 5 যদি প্রতীক হিসাবে গণনা করা হয়), অতিরিক্ত গল্ফযুক্ত এবং আমার যাদু অন্তর্নির্মিত।
ক্যালকুলেটরফলাইন

1

গণিত, 58 বাইট

Differences[Nest[Join[#,1-#]&,{0},#]~Position~0][[;;#]]-1&

1
আমি কীভাবে জানতে পারি যে আপনি আমার সমাধানটি গ্রহণ করেন নি এবং এটি গল্ফ করেছেন?
ক্যালকুলেটরফলাইন

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

@ Catsarefluffy আমি কেবল আপনার সম্পাদনাটি দেখেছি। আমি যখন শেষটি দেখেছিলাম তখন এটির আসল আকারে ছিল। আমি এই উত্তরটি সরিয়ে দেব তবে আপনাকে কেবল বিশ্বাস করতে হবে যে এটি স্বাধীন ছিল :)
এ সিমন্স

1;;#সহজভাবে প্রতিস্থাপন করা যেতে পারে ;;#
LegionMammal978

আসলে আমি টিমিডির উত্তর থেকে আউটপুট রূপান্তর পেয়েছি। (বিশেষত, প্রথম অনুচ্ছেদটি আমাকে স্মরণ করিয়ে দিয়েছে Position))
ক্যালকুলেটরফ্লাইন

1

পার্ল, 45 + 2 = 47 বাইট

$_=2;s/./(1,20,210)[$&]/ge until/.{@F}/;say$&

-pএবং -aপতাকা প্রয়োজন :

$ perl -pa morse-seq.pl <<< 22                                                                            
2102012101202102012021

@ শার্লক 9 উত্তর এর পোর্ট

টনকে 9 টি বাইট সংরক্ষণ করা হয়েছে


-aবিকল্প আপনি ইনপুট একটি বিনামূল্যে কপি, দেয় তাই$_=2;s/./(1,20,210)[$&]/ge until/.{@F}/;$_=$&
টন Hospel

@ টনহোস্পেল থ্যাটস নিখুঁত, বিশ্বাস করতে পারছে না আমি সে সম্পর্কে ভাবি না :-) এবং আমি এইটি -pদিয়ে সংরক্ষণ করতে পারি -E: say$&শেষে যদি আমরা ধরে নিই পার্ল> ভি 5.18
সিআরএল

1

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

f=(n,s="2")=>s[n]?s.slice(0,n):f(n,s.replace(/./g,c=>[1,20,210][c]))

@ শার্লক 9 এর উত্তর বন্দর

সম্পাদনা: সংরক্ষিত 6 বাইট @ ওয়াশিংটনগুয়েডসকে ধন্যবাদ।


!s[n]জায়গায় কাজ করবে s.length<n? অথবা হয়ত শুধু s[n]সঙ্গে ?:উল্টানো?
সরানো হয়েছে

1

সিজেএম (19 বাইট)

1ri){2b:^}%2ew::-f-

অনলাইন ডেমো

এটি থু-মোর্স ক্রমের উপাদানগুলির মধ্যে ক্রমাগত পার্থক্য বাড়ানোর পদ্ধতিকে ব্যবহার করে।


পুনর্লিখনের নিয়ম ব্যবহার করে আমার সংক্ষিপ্ততম পদ্ধতিটি 21 বাইট:

ri_2a{{_*5*)3b~}%}@*<

(সতর্কতা: ধীর) এটি পুনর্লিখনের নিয়মগুলিকে এনকোড করে

0  ->  1
1  ->  20
2  ->  210

যেমন

x -> (5*x*x + 1) in base 3

0

রুবি, 57 বাইট

এক্সনরের পাইথন উত্তরের একটি বন্দর। পরিবর্তনগুলি বেশিরভাগ ক্ষেত্রে রুবির সত্যবাদী হওয়ার কারণে , এবং বাইট ব্যবহার এবং বনাম সংরক্ষণের জন্য, তালিকা বোধগম্যতা সরাসরি আমদানি করার tপরিবর্তে andস্থায়ী বিবৃতিতে থাকে ।0(1..n).map1+t[i]-t[i-1]

t=->n{n<1?n:n%2^t[n/2]}
->n{(1..n).map{|i|1+t[i]-t[i-1]}}

0সত্য? ওটা কিভাবে কাজ করে??
ক্যালকুলেটরফলাইন

@ ক্যাটস আরেফ্লুফি আমার অভিজ্ঞতার সাথে, খারাপভাবেই
শার্লক 9

0

ম্যাথমেটিকা ​​( প্রায় অচল), 107 110 বাইট

({0}//.{n__/;+n<2#}:>{n,{n}/.x_:>(1-x)/._[x__]:>x}//.{a___,0,s:1...,0,b___}:>{a,+s/.(0->o),0,b}/.o->0)[[;;#]]&

বারবার প্রতিস্থাপনের নিয়ম প্রয়োগ করে ক্রমটি তৈরি করা হয়। আরেকটি নিয়ম এটিকে পছন্দসই আউটপুটে রূপান্তর করে। যদি পর্যাপ্ত লোকেরা আগ্রহী হন, আমি বিস্তারিতভাবে ব্যাখ্যা করব।

অ-বর্ণমালা সংস্করণ

({$'-$'}//.{$__/;+$/#
<($'-$')!+($'-$')!}:>
{$,{$}/.$$_:>(($'-$')
!-$$)/.{$$__}:>$$}//.
{$___,$'-$',$$:($'-$'
)!...,$'-$',$$$___}:>
{$,+$$/.($'-$'->$$$$)
,$'-$',$$$}/.$$$$->$'
-$')[[;;#]]

হিসাবে বিড়াল AreFluffy দ্বারা প্রস্তাবিত।


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

এবং যদি আপনি সমস্ত অক্ষরকে সিক্যুয়েন্সে পরিণত করেন $এবং প্রতিস্থাপন 0করেন x-x(যেখানে x এর অব্যবহৃত ক্রম রয়েছে $) (এবং (x-x)!1 (ডাইটো) এর জন্য ব্যবহার করেন ), তবে আমরা বর্ণমুক্ত-মুক্ত হই।
ক্যালকুলেটরফলাইন

বাইটস্যাভ: এর {x__}পরিবর্তে ব্যবহার করুন_[x__]
ক্যালকুলেটরফ্লাইন

আমি আসলে বেশ নিশ্চিত যে ম্যাথামেটিকা ​​কেবলমাত্র চিহ্নগুলিতে বা $[_]:=-/;(উভয়ই কাউন্টার মেশিন অনুকরণের মাধ্যমে) ট্যুরিং-সম্পূর্ণ
ক্যালকুলেটরফলাইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.