Thue-Morseシーケンスを書き出す


22

このサイトには、シーケンスを印刷するように求めるいくつかの課題がありますが、これも例外ではありません。

(このチャレンジのシーケンスの次の説明では、シーケンス内のシンボルが0およびであると想定しています1。)

再帰的定義Thue-Morseのシーケンスがあることです

T_0 = 0
T_2n = T_n
T_2n+1 = 1 - T_n

より直接的な定義はからそのシーケンスである02**m-1し、2**m to 2**(m+1)-1バイナリ補完しています。そう0では続いて101続いて100110続いて1001、そして、先にビットを飛ばし、0110100110010110続いています1001011001101001

課題は、最初の要素のThue-Morseシーケンスを出力するプログラムまたは関数を作成することです。nここで、nは負でない整数です。以下の例に示すように、出力には任意の2つのシンボルを使用できます。

>>> tm_01(20)
01101001100101101001
>>> tm_ab(42)
abbabaabbaababbabaababbaabbabaabbaababbaab
>>> tm_paren(37)
())()(())(()())()(()())(())()(())(()(
>>> tm_space_star(12)
 ** *  **  *
>>> tm_01(0)
                # to show that this is a valid input

ルール

  • 入力は負でない整数になります。すべての入力が有効であると想定できます。

  • 出力nは、便利な記号を使用して、Thue-Morseシーケンスの最初の要素でなければなりません。必要に応じて、セパレータを追加することもできます。私の例では、そうではありません。 注:としてこのルールは、(Pythonののそれらのような)のリストを可能にする,有効な区切りであると私は文字を先頭または末尾に気にしないよう、[そして]出力に。

  • これはコードゴルフであるため、最小バイト数が優先されます。

いつものように、問題が不明な場合はお知らせください。幸運と良いゴルフ!

カタログ

var QUESTION_ID=65549;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=47581;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"http://api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var aB=a.size,bB=b.size;return aB-bB});var languages={};var place=1;var lastSize=null;var lastPlace=1;valid.forEach(function(a){if(a.size!=lastSize)lastPlace=place;lastSize=a.size;++place;var answer=jQuery("#answer-template").html();answer=answer.replace("{{PLACE}}",lastPlace+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link);answer=jQuery(answer);jQuery("#answers").append(answer);var lang=a.language;lang=jQuery('<a>'+lang+'</a>').text();languages[lang]=languages[lang]||{lang:a.language,lang_raw:lang.toLowerCase(),user:a.user,size:a.size,link:a.link}});var langs=[];for(var lang in languages)if(languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function(a,b){if(a.lang_raw>b.lang_raw)return 1;if(a.lang_raw<b.lang_raw)return-1;return 0});for(var i=0;i<langs.length;++i){var language=jQuery("#language-template").html();var lang=langs[i];language=language.replace("{{LANGUAGE}}",lang.lang).replace("{{NAME}}",lang.user).replace("{{SIZE}}",lang.size).replace("{{LINK}}",lang.link);language=jQuery(language);jQuery("#languages").append(language)}}
body{text-align:left!important}#answer-list{padding:10px;width:290px;float:left}#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table>



1
簡単な言葉で言えば、関数は再帰的であり、入力を無効にして追加します。
ユーメル


2
@PeterTaylorどのように?リンクされた質問に対する可能な答えの1つはThue-Morseシーケンスですが、この質問はThue-Morseのみを生成することです。
Sherlock9

1
前の質問に対する回答の一部は、この質問に些細な変更で回答するために使用でき、この質問に対するすべての回答は、些細な変更で以前の質問に回答するために使用できるためです。
ピーターテイラー

回答:


14

Pyth、6バイト

xMjR2Q

オンラインで試す:デモンストレーション

@ThomasKwaのソリューションと@FryAmTheEggmanのバリエーションに基づいています。

次の式を使用します。Thue i-Morseシーケンスの-th桁は次のとおりですxor(digits of i in base 2)

説明:

xMjR2Q   implicit: Q = input number
  jR2Q   convert each number in [0, 1, ..., Q-1] to its binary digits
xM       xor each binary list

9

CJam、17 9バイト

ri{2b:^}/

または

ri,2fb::^

ここでテストしてください。

説明

これは、1のバイナリ表現のs の数のパリティに基づいて、Wikipediaで提供されている代替定義を使用しnます。

ri   e# Read input and convert to integer n.
{    e# For each i from 0 to n-1...
  2b e#   Convert i to base 2.
  :^ e#   Fold XOR over the bits to compute the parity of the number of 1s.
}/

別の解決策は、使用して,有効にするn範囲に明示的に[0 ... n-1]ブロックを必要とせずにバイナリ表現とXORを計算するために挿入演算子を使用する前に。

ボーナスソリューション

他の定義に基づいたいくつかのソリューションを以下に示します。2つの解決策がある場合、短い方の解決策は非常に速くメモリを爆破します(なぜなら、2^n前計算はに切り捨てる前にビットを生成するからですn)。

L-システムなどと0 --> 011 --> 10

ri_2mL2,\{2,aA+f=s:~}*<
ri_2,\{2,aA+f=s:~}*<

前の部分を否定して追加することにより:

ri_2mL2,\{_:!+}*<
ri_2,\{_:!+}*<

チャレンジで指定された繰り返し関係を使用しdivmod、XORを使用して2つの再帰的定義を区別します。

ri{Ta{2md\j^}j}/

(もちろん、この再帰関係は、Thue-Morseシーケンスをのバイナリ表現の1ビットのパリティとして表現するための単なる別の方法ですn。)


メモリを浪費するソリューションも私の最初の考えでしたが、0.5テラバイト以上のメモリを使用して42(ビットセットを想定して)出力を計算するのはかなり不合理だと考えました。
ヨーネ

@JohnE問題は解決しました。;)
マーティンエンダー

:^私を幸せにします。別の注意、聖なるがらくた、それはクールなアルゴリズムです。
ファンドモニカの訴訟

@QPaysTaxesではない:^}
TheLethalCoder

1
あまりにも私を幸せにする@TheLethalCoder
基金モニカの訴訟

8

Dyalog APL、8 7バイト

≠⌿⍴∘2⊤⍳

これは、インデックスの原点が0(⎕IO←0)であることを期待するモナド列です。同等の非トレイン関数は{≠⌿(⍵⍴2)⊤⍳⍵}です。

説明:

      ⍳      List of numbers from 0 to (input-1)
  ⍴∘2        (input) copies of 2
     ⊤       Convert all the elements in ⍳ to base 2 to (input) digits
≠⌿           Reduce over the first axis by not-equal

出力は、スペースで区切られたリストである01ここで試してみてください


8

Mathematica、35 21バイト

MathematicaにはThue-Morseシーケンス用のビルトインがあります!

Array[ThueMorse,#,0]&

元の回答:

#&@@@DigitCount[Range@#-1,2]~Mod~2&

7

LabVIEW、15のLabVIEWプリミティブ

プローブ付きのスーパーファンシーGIFとして

ここに画像の説明を入力してください


3
これがどのようにテストされるか説明していただけますか?
ヨーネ

オプション1:labviewテストバージョンを取得して再構築します。オプション:これを.exeまたは.viとして送信する方法を提案します(後者の場合は、labviewも取得する必要があります)
Eumel

1
本当に、これが実行されたときの動作を確認したいと思います。GIFの記録は説明になりますか?
ヨーネ

それは私がちょうどそれをやった素晴らしいアイデアであり、すぐにそれをアップします
Eumel

6

J、12 11バイト

@MartinBüttnerはバイトを保存しました。

~:/@#:"0@i.

これは、次のように使用される単項(単項を意味する)関数です。

   f =: ~:/@#:"0@i.
   f 10
0 1 1 0 1 0 0 1 1 0

説明

T nnのバイナリ表現の1ビット数のパリティであるという代替定義を使用しています。

~:/@#:"0@i.  Input is n.
~:/          Output is XOR folded over
   @#:       the binary representations of
      "0     each element of
        @i.  integers from 0 to n-1.

{.(,-)^:]いくつかのルールストレッチ(許可されているを使用して 9バイトで動作します。例えば、5それは出力します5 _5 _5 5 _5。(ルールの
拡張の

4

Pyth、11 10バイト

m%ssM.Bd2Q

Pythonスタイルのリストとして出力します。


バイナリ文字列に対してXORを使用しようとしましたが、Pythについてそれを行うのに十分な知識がありません。とにかくこれはずっと短いです。+1
ETHproductions

@FryAmTheEggmanああ、F「reduce」を検索したので、知りませんでした。あなたは... CWとして投稿できる
lirtosiast

4

Japt29 11 バイト

Uo ®¤¬r@X^Y

オンラインでお試しください!

約4バイトを節約する配列として直接出力します。

非ゴルフと説明

Uo ®   ¤  ¬ r@  X^Y
Uo mZ{Zs2 q rXY{X^Y}}
        // Implicit: U = input number
Uo      // Create an array of integers in the range `[0, U)`. 
mZ{Zs2  // Map each item Z in this range to Z.toString(2),
q rXY{  //  split into chars, and reduced by
X^Y}}   //   XORing.
        //  This returns (number of 1s in the binary string) % 2.
        // Implicit: output last expression

編集:次の8バイトコードを使用できるようになりました(無効です。このチャレンジの後に公開された機能)。

Uo ®¤¬r^

あなたの説明を更新することをお勧めします
Eumel

@Eumelもうやった...?
ETHproductions

あなたが説明したコードと表情の異なる上記のコード
Eumel

@Eumelそこのほうがいいですか?
ETHproductions

それは完璧です:)
ユーメル

4

Haskell、39 36 35バイト

take<*>(iterate([id,(1-)]<*>)[0]!!)

オンラインでお試しください!

仕組み:-function times から始めて[0]適用しx ++ invert xますnn結果のリストから最初の要素を取得します。Haskellの遅延により、最初のn要素のみが実際に計算されます。注:最初<*>は関数コンテキストにあり、2番目はリストコンテキストにあります。

GHC v8.4(チャレンジ時には利用できませんでした)では、34バイトのソリューションがあります。

take<*>(iterate(id<>map(1-))[0]!!)

編集:-3応答 @Laikoniのおかげで-4バイト。@ØrjanJohansenのおかげで-1バイト。


(\x->x++map(1-)x)GHC 8.4で、([id,(1-)]<*>)または(id<>map(1-))GHC 8.4 で短縮できます。
ライコニ

take<*>(iterate([id,(1-)]<*>)[0]!!)
Ørjanヨハンセン

3

Haskell、54バイト

nimiのソリューションよりもコンパクトではありませんが、この機能的なコードの難読化を否定したくありませんでした。オブジェクトの任意のペアに対して機能します。例えば、あなたは置き換えることができます(f 0.f 1)によって(f 'A'.f 'B')

定義に基づいて、最初の2 n桁の後に反転した同じ数字のシーケンスが続きます。私たちが行うことは、2つのリストを並べて構築することです。1つはシーケンス用、もう1つは逆用です。継続的に、あるリストのますます長い部分を別のリストに追加します。

実装は3つの定義で構成されます。

t=(f 0.f 1)t
f c=flip take.(c:).g 1
g n l=l n++g(n+n)l

関数tは任意の数を受け入れ、その長さのThue-Morseシーケンスを返します。他の2つの関数はヘルパーです。

  • 関数fはいずれかのリストを表します。f 0シーケンスf 1用、逆用です。
  • 関数gは、あるリストのますます長い繰り返しを別のリストに追加します。

フィドル:http : //goo.gl/wjk9S0



2

バーレスク、21バイト

{0}{J)n!_+}400E!jri.+

例:

blsq ) "20"{0}{J)n!_+}400E!jri.+
{0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1}
blsq ) "42"{0}{J)n!_+}400E!jri.+
{0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1}

説明:

{0}      -- setup
{J)n!_+} -- duplicate, map invert, concatenate
400E!    -- do 400 times (this will eventually run
            out of memory).
jri.+    -- take n elements

なければjri.+(それは長さのモールス信号シーケンスを計算しますので、一部、あなたがメモリ不足になります信じられないほどの膨大な数を)。しかし、バーレスクは怠zyであるため、最初のn要素を要求するだけで動作します。


いいね 私のHaskellソリューションに似ています。ただし、1バイトを節約するために99回だけ繰り返します。
nimi

2

K5、27の 13バイト

{x#((log x)%log 2){x,~x}/0}

シーケンスの計算は非常に簡単で、問題は計算をしすぎないことです。シーケンスを簡単に拡張すると、長さが2の累乗である文字列のシーケンスが得られることがわかります。入力のログベース2を取得して切り上げると、十分な作業ができるようになり、適切なサイズに切り詰めることができます。

  {x#((log x)%log 2){x,~x}/0}'(20 42 37 12 0)
(0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1
 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1
 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0
 0 1 1 0 1 0 0 1 1 0 0 1
 ())

編集:

パリティベースのソリューション:

~=/'(64#2)\'!

動作中:

  ~=/'(64#2)\'!20
0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1

K5には任意のバイナリへの変換プリミティブがないため、たとえば64ビットのデコードを指定する必要があることに注意してください。K5は任意の精度の数学を使用しないため、どのような場合でも処理できる入力のサイズには制限があります。


2

オクターブ、33 31バイト

Thomas Kwaのおかげで2バイト節約されました。

@(n)mod(sum(dec2bin(0:n-1)'),2)

2

Perl 5の、62の 49バイト

ええ、これに最適な言語ではありませんが、私はまだそれが出てきた方法が好きです。用5.14+が必要/rsay

sub{$_=0;$_.=y/01/10/r while$_[0]>length;say substr$_,0,$_[0]}

パリティ定義を使用するには、5.12 +が必要ですsay

sub{say map{sprintf("%b",$_)=~y/1//%2}0..$_[0]-1}

2

プロローグ(SWI)、115バイト

コード:

N*X:-N>1,R is N//2,R*Y,X is(N mod 2)xor Y;X=N.
p(N):-M is N-1,findall(E,between(0,M,E),L),maplist(*,L,K),write(K).

説明:

N*X:-                                 % Calculate Thue-Morse number at index N
     N>1,                             % Input is bigger than 1
     R is N//2,R*Y,X is(N mod 2)xor Y % Thue-Morse digit at index N is binary digits of N xor'ed
     ;X=N.                            % OR set X to N (end of recursion)
p(N):-
      M is N-1,                       % Get index of Nth number
      findall(E,between(0,M,E),L),    % Make a list of number 0->N-1
      maplist(*,L,K),                 % Map * on list L producing K
      write(K).                       % Print K

例:

p(20).
[0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1]

こちらからオンラインでお試しください


2

網膜70 69バイト

定義を最初の単語0とプロダクション0 --> 01およびを持つLシステムとして使用する1 --> 10

^
0;
(T`d`ab`^(.)+;(?!(?<-1>.)+$)
a
01
)`b
10
!`^(?=.*;(.)+)(?<-1>.)+

入力は単項で取得さます。

-sフラグを使用して、単一のファイルからコードを実行できます。または、オンラインで試してみてください。

説明

^
0;

前に付加0;入力に0最初の言葉で、;ちょうど区切りです。

(T`d`ab`^(.)+;(?!(?<-1>.)+$)

(これは、(ループが文字列を変更する停止するまで繰り返す)ループの始まりであることを示しています。このステージ自体は0、それぞれになり、1aなりbます(d拡張するため0-9)。これは、現在の単語(長さが測定されて(.)+いる単語が入力よりも短い場合(つまり1、単語内のsと一致する文字列の末尾を読み取れない場合)である限り)を行います。

a
01

a(の代わりに0)をに置き換え01ます。

)`b
10

b(の代わりに1)をに置き換え10ます。これもループの終わりです。文字変換ステージの条件が失敗すると、ループは終了します。これは、すべて0のsと1sが変更されずに残り、他の2つのステージが一致するものを見つけられないためです。

!`^(?=.*;(.)+)(?<-1>.)+

最後のステップは、単語を入力の長さに切り捨てることです。今回(.)+は先読みで入力の長さを測定します。次に、文字列の先頭からその数の文字に一致します。


2

ルビー、33

->n{n.times{|i|p ("%b"%i).sum%2}}

このような呼び出し:

f=->n{n.times{|i|p ("%b"%i).sum%2}}
f[16]

2進数のパリティがthue-morseシーケンスを形成するという事実を使用します。

区切り文字は改行です。数値iをバイナリ文字列に変換し、2を法とするすべてのASCIIコードの合計を計算します。

改行が受け入れ可能な区切り文字でない場合、次の行には追加の2バイトの区切り文字がありません。

->n{n.times{|i|$><<("%b"%i).sum%2}}

2

MATL、9バイト

この言語は、チャレンジ後に設計されました

アプローチ1:13バイト

これは、サイズが増加するブロックの否定コピーを連結することによりシーケンスを構築します。

itBFw"t~h]w:)

>> matl itBFw"t~h]w:)
> 20
0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1

説明

i           % input number, say "N"
tB          % duplicate and convert to binary. Produces a vector
F           % initialize sequence to "false"
w           % swap to bring vector to top
"           % for loop. There will be at least log2(N) iterations
  t~h       % duplicate, negate, concatenate
]           % end for
w           % swap
:)          % index with vector 1, 2, ..., N

アプローチ2:9バイト

これは、Alephalphaの答えと同じアプローチを使用します

i:1-B!s2\

>> matl i:1-B!s2\
> 20
0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1

説明

i           % input "N" 
:1-         % create vector 0, 1, ..., N-1
B           % convert to binary
!           % tranpose
s           % sum
2\          % modulo 2


2

ゼリー、4バイト

ḶB§Ḃ

このチャレンジはJellyよりも古いことに注意してください。

オンラインでお試しください!

使い方

ḶB§Ḃ  Main link. Argument: n (integer)

Ḷ     Unlength; yield [0, ..., n-1].
 B    Compute the binary representation of each integer in the range.
  §   Take the sum of each binary representation.
   Ḃ  Take the LSB of each sum.

1

Matlab、42

私はそれが0現在のシリーズの補数を追加するステップを最初から繰り返したのと同じであるという事実を使用していnます。

t=0;for k=1:input('');t=[t;~t];end;disp(t)

あなたは...私が考えるtでDISP(t)を置き換えることができます
AlexR


1

Bash、71 66バイト

定義に基づいて、最初の2 n桁の後に反転した同じ数字のシーケンスが続きます。

x=0;y=1;while((${#x}<$1));do z=$x;x=$x$y;y=$y$z;done;echo ${x::$1}

$1 パラメータとしては、必要な桁数です。

フィドル:http : //goo.gl/RkDZIC


1

バッチ、115 + 2 = 117バイト

Bashの回答に基づきます。

@echo off
set x=0
set y=1
set z=0
:a
set x=!x!!y!
set y=!y!!z!
set z=!x:~0,%1!
if !z!==!x! goto a
echo !z!

s /Vの使用を許可するには、呼び出しで追加が必要!です。


1

ES6、53バイト

f=(i,x="0",y=1)=>x.length<i?f(i,x+y,y+x):x.slice(0,i)

再帰はループより簡単に見えました。


1

パー、8バイト

✶u[Σ_✶¨^

説明:

✶          parse implicit input number
 u         range [0..n-1]
  [        map:
   Σ           convert to binary
    _✶         get digit list
      ¨^       fold with xor

次のようなものを出力します。

(0 1 1 0 1 0 0 1)

1

数学++、86バイト

0.0\n0および1.0\n1に使用

?>n
3*!!(n-m)>$
m>a
0>k
6+6*!a>$
9-2*!(a%2)>$
a/2>a
5>$
(a-1)/2>a
!k>k
5>$
k
m+1>m
2>$

1

Arcyóu50 55バイト

正しく動作させるには5バイトを追加する必要がありました:(

(f i(_(#(l)))(r b^(@(> i 0)(pg 0(% i 2)(: i(#/ i 2))))0

説明(側面に沿ってPythonesque擬似コードを使用:

(f i (_ (# (l)))       ; For i in range(int(input())):
  (r b^                ; Reduce with binary xor
    (@ (> i 0)         ; While i > 0:
      (pg 0            ; Return first of its arguments
        (% i 2)        ; i mod 2
        (: i (#/ i 2)) ; i //= 2
      )
    )
    0                  ; Default reduce argument of 0 for the first bit in the sequence

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.