プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

26
ジグザグパターンを作る
あなたの仕事は、1つの整数入力を取り、スラッシュとバックスラッシュを使用してジグザグパターンを印刷することです。 整数入力は、各ジグとザグの長さ、およびジグとザグの数を決定します パターンは常に右から左に始まります テストケース 4-> / / / / \ \ \ \ / / / / \ \ \ \ 2-> / / \ \ 0-> 1-> / 8-> / / / / / / / / \ \ \ \ \ \ \ \ / / / / …

8
トポロジを確認する
チャレンジ T有限集合のサブセットの集合が与えられたS={1,2,3,...,n}場合T、トポロジーかどうかを判断します。 説明 Powersetの P(S)一部のセットのはS、すべての部分集合の集合ですS。いくつかの例: S = {}, P(S) = {{}} S = {1}, P(S) = {{}, {1}} S = {1,2}, P(S) = {{}, {1}, {2}, {1,2}} S = {1,2,3}, P(S) = {{}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}} トポロジー Tセット上でSのサブセットでありP(S)、以下の特性を有します: {}あり、TありSますT もしAとBしているTそのように彼らの交点がありますA ∩ B もしAとBしているTそのように労働組合がありますA ∪ B* *この定義は完全に正しいものではありませんが、有限集合の場合に当てはまります。これはこの課題の目的には十分です。実際の公理は無限の結合も可能にしますが、それは有限の場合には無関係です。 …

12
輪郭を描く
標高の長方形のマトリックスを指定して、その輪郭を描きます。 仕事 の場合、2つの要素xとyは同じ輪郭レベルにありますfloor(x/10) == floor(y/10)。たとえば、52と58は同じ等高線レベルにありますが58、そうで64はありません。 輪郭を描く動作は次のように定義されます。すべての要素についてe、次のように選択した2文字の文字列に置き換えます。 最初の文字は" "、下の要素eが同じ輪郭レベルにあるeか、下の要素がないかe、"_"そうでない場合 2番目の文字は" "、右側の要素がe同じ輪郭レベルにあるeか、右側の要素がない場合、eまたは"|"そうでない場合 行内の要素が結合され、次に行が改行で結合されます。 例 入力が[[5,20],[3,6]]、次のように視覚化されているとしましょう 5 20 3 6 最初に見てください5。以来、3同じ等高線レベルであり5、最初の文字です" "。20はと等高線レベルにないため5、2番目の文字は"|"です。 今、私たちは見てください20。6はと等高線レベルにないため20、最初の文字は"_"です。の右側に要素がないため20、2番目の文字は" "です。 今、私たちは見てください3。下3に要素がないので、最初の文字は" "です。以来、6同じ等高線レベルにあり3、第二の文字があります" "。 今、私たちは見てください6。下6に要素がないので、最初の文字は" "です。の右側に要素がないため6、2番目の文字は" "です。 これらの2文字の文字列に基づいて、getを置き換える[[" |","_ "],[" "," "]]。これらを結合すると、次の出力が得られます |_ ルール 入力行列は常に長方形で、正の整数で構成されます。 末尾のスペースまたは改行は任意の量(0を含む)であり、一貫性がある必要はありません。 同じ結果が得られる限り、同じアルゴリズムに従う必要はありません。 プログラムまたは関数は、改行で区切られた文字列、文字列のリスト、または同等のものを出力する場合があります。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 テストケース input output [[1,5,8,9],[3,11,13,8],[7,14,10,9],[4,8,7,6]] _ _ | | |_ _| [[0,10,20,30,40,50,60,70,80,90],[0,0,10,10,20,20,30,30,40,40],[0,0,0,10,10,10,20,20,20,30],[0,0,0,0,10,10,10,10,20,20],[0,0,0,0,0,10,10,10,10,10],[0,0,0,0,0,0,10,10,10,10],[0,0,0,0,0,0,0,10,10,10],[0,0,0,0,0,0,0,0,10,10],[0,0,0,0,0,0,0,0,0,10],[0,0,0,0,0,0,0,0,0,0]] …

28
めまい整数列挙
今日の課題は、すべての整数を列挙するシーケンスの特定の用語を出力することです。シーケンスは次のとおりです。シーケンスf(n)を生成する0インデックス関数ceil(x)があり、これがシーリング関数である場合f(0) = 0、; abs(f(n)) = ceil(n/2); およびが両方とも偶数または両方が奇数のsign(f(n))場合は正です。nceil(n/2) このシーケンスを理解しやすくするために、最初のいくつかの用語は次のとおりです。 0 1 -1 -2 2 3 -3 -4 4 5 -5 -6 6 7 -7... あなたの仕事は、整数を取り、シーケンスのth項をn出力するプログラムを書くことnです。入力は0または1インデックスのみです。 テストケース(0から始まる): 0 => 0 1 => 1 2 => -1 3 => -2 4 => 2 5 => 3 これはcode-golfで、最少バイトが勝ちます!

4
インターレース回転
チャレンジ 文字の正方行列(1バイトの印刷可能なASCII文字)を指定すると、行列の各「リング」を反対方向に回転させます。 例を見てみましょう: 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 次に、次のように、最も外側のリングが時計回りに90度回転します。 1 2 3 4 5 L G B 6 1 6 A M 2 B F => N 3 G K …
25 code-golf  matrix 

11
カードの家(バージョン1)
バージョン2はこちら。 簡単な課題:整数を指定すると、指定した数のストーリーを持つカードの家を描きます。数値が負の場合、家を上下逆さまに描きます。例: Input: 2 Output: /\ -- /\/\ Input: 5 Output: /\ -- /\/\ ---- /\/\/\ ------ /\/\/\/\ -------- /\/\/\/\/\ Input: 0 Output: <empty, whitespace or newline> Input: -3 Output: \/\/\/ ---- \/\/ -- \/ 入力は数値または文字列にすることができます。出力は示されているとおりで、先頭および/または末尾のスペースと改行が許可されている必要があります。 これはcode-golfなので、各言語の最短のプログラム/機能が勝つかもしれません!

10
いくつかのダイヤモンドをダブルアップ
問題 nここで正の整数を与えますn < 100 次のようにダイヤモンドパターンを出力します。 入力 n=1 /\/\ \/\/ 入力n=2: /\ /\ //\\/\/\//\\ \\//\/\/\\// \/ \/ 入力n=3: /\ /\ //\\ /\ /\ //\\ ///\\\//\\/\/\//\\///\\\ \\\///\\//\/\/\\//\\\/// \\// \/ \/ \\// \/ \/ 入力n=4: /\ /\ //\\ /\ /\ //\\ ///\\\ //\\ /\ /\ //\\ ///\\\ ////\\\\///\\\//\\/\/\//\\///\\\////\\\\ \\\\////\\\///\\//\/\/\\//\\\///\\\\//// \\\/// \\// \/ \/ …

6
シーケンスがメタすぎます
空白の1インデックスシーケンスから始めます。 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,... n 番目のステップでは、a(n)がシーケンスのn 番目のエントリである場合、最初の残りの空白から始まる1より大きい整数ですべてのa(n)空白を埋めます。 最初のステップの後: 2,_,3,_,4,_,5,_,6,_,7,_,8,_,9,_,10,_,11,_,12,_,13,_,... 1より大きい最初の整数は2であるため、a(1)は2でなければならないことに注意してください。 2番目のステップでは、すべてのa(2)ブランクを埋めます。a(2)が2でなければならないことは明らかです。 2,2,3,_,4,3,5,_,6,4,7,_,8,5,9,_,10,6,11,_,12,7,13,_,... 3番目のステップでは、すべてのa(3)ブランクを埋めます。シーケンスから、a(3)= 3。 2,2,3,2,4,3,5,_,6,4,7,_,8,5,9,3,10,6,11,_,12,7,13,_,... 4番目のステップでは、すべてのa(4)ブランクを埋めます。シーケンスから、a(4)= 2。 2,2,3,2,4,3,5,2,6,4,7,_,8,5,9,3,10,6,11,3,12,7,13,_,... 最終的に: 2,2,3,2,4,3,5,2,6,4,7,2,8,5,9,3,10,6,11,3,12,7,13,2,... 仕事 nを指定すると、シーケンスのn 番目の要素が返されます。 シーケンスの最初の10,000,000の用語は、ここにあります。 これはcode-golfです。バイト単位の最短回答が優先されます。標準の抜け穴が適用されます。

8
私の子供のために階段を作ります
先日、息子はレゴのようなブロックを使って階段を作るように頼みました。そして、私はこのようなものを思いつきました: それから私の子供は、コンピューター画面で同様の階段を生成する最小バイト数を使用するプログラムを私に尋ねました。私はcode-golfが得意ではないので、あなたの助けが必要です。次のプログラムが必要です。 階段に必要なレベルの数を持つ正の整数を受け取ります。 画像に表示されているパターンを使用して、階段の図面を出力します。 出力はテキスト形式になりますが、ブリックは互いに区別できます。たとえば、「█」文字をブロックの半分として使用して、好きな色で塗りつぶしたり、任意の文字を選択したりできます。 制限事項: ブロックは3種類の色である必要があり、できるだけ長く使用されます(入力が1または2の場合、3色すべてを使用するのに十分なブロックがありません)。必要に応じて、たとえば「░▒▓」文字を使用するか、3つの異なる文字を選択するだけです。 同じ色またはパターンの2つのブロックを1列に並べて配置することはできません。 私の息子は、階段が描かれている限り、後続のスペースや改行を気にしません。 例(文字の選択が悪いのでごめんなさい): Input: 1 Output: ██ Input: 2 Output: ██ ▓▓ Input: 3 Output: ██ ▓▓ ██░░ Input: 5 Output: ██ ██ ██░░ ██░░ ██░░▓▓

3
バズビーバークレーロボットホーキーポーキー
バズビーバークレーロボットホーキーポーキー 仕事 Busby Berkeleyの数字のスタイルでHokey Pokey(またはお好みであればCokey)の歌詞に合わせて踊るロボットのラインを描いたASCIIアートアニメーションを作成するプログラムまたは関数を作成してください! 出力例 入力 3つの引数を受け入れます(有効と見なされます)。 N =ライン内のロボットの数(最小= 6) B =ミリ秒単位の1つの「ビート」の持続時間(最小= 10) D =連続するロボット間のミリ秒単位の遅延(Min = 0) (上記の出力例では、N = 8、B = 380、C = 75) 仕様書 N台のロボットがステージ上に連続して表示されます。 「詩」からの1行のテキストがステージの下に一度に表示されます(中心が1文字以内で、引用符で囲まれています)。 ロボットは、詩が5回繰り返されるまで、示されているとおりに各行のアクションを実行します。 アクションは、ASCII文字のセットを使用してロボットを描写し、次のアクションを実行する前に指定された期間待機することによって実行されます。アクションの継続時間は「ビート」で測定されます。1ビートの持続時間はミリ秒数Bです。 最初のロボットは、行のテキストが表示されるとすぐに、詩の各行に対してアクションの実行を開始します。 後続の各ロボットは、右側のロボット(左側)がアクションを開始してから特定の時間(D)までアクションの開始を遅らせます。 ロボットの描写は、ロボットの「アンテナ」を表すASCII文字によって異なります。5つのタイプがあり、プログラムが実行されるたびにランダムに配布されます。 各タイプのアンテナは少なくとも1つのロボットで使用する必要がありますが、3つ未満のロボットで区切られたロボットには同じタイプを使用しないでください。任意の2種類のアンテナの量は、1を超えて異なることはできません(たとえば、1xType_4および3xType_5は3-1> 1なので違法です) 詩とアクション 詩全体が一度に1行ずつ5回繰り返されます... Line Text Action/Beats, ---- ----------------------------- ------------------------------------ 1 You put your ? in ??/4 …

24
文字列をアルファベットのスニペットに減らします
大文字と小文字のアルファベット文字とスペースのみで構成される空でない文字列([a-zA-Z ])がある場合、最初の文字から始まるアルファベットのスニペットに減らします。 文字列を減らすには、最初のアルファベット文字から始め、その後のアルファベットの次の文字ではないすべての文字を削除します。文字列の最後に到達するまでこれを繰り返します。 例codegolf: で始まり、アルファベットの次の文字ではないcため削除oします。 キープdそれはようであるアルファベットの次の文字、そして保つeそれはあまりにも次の文字であるとして。 削除g、oおよびl、と続けますf。 最終的なスニペットは cdef ルール 大文字を維持する必要があるため、CodEgolF結果としてCdEF スペースはアルファベットの文字ではないため、文字列の先頭であっても常に削除する必要があります 縮小の性質により、入力の最初のアルファベット文字は常に出力の最初の文字になります。 zZはアルファベットの最後の文字です。その後に文字はなく、アルファベットはループしません。 テストケース codegolf -> cdef CodEgolf -> CdEf codeolfg -> cdefg ProgrammingPuzzles -> P Stack Exchange -> St The quick red fox jumped over the lazy brown dog -> Tuvw Zebra -> Z Abcdegfhijkl -> Abcdef 得点 …

10
数字をゴルフしてください!
コードゴルフプログラムを書くとき、私は通常、いくつかの数値定数を使用することになります。それが私が考える方法だから、私は常にそれらを10進数に入れましたが、私は自分のコードがコードをわずかに短くするかもしれない他の数値形式をサポートしていることに気付きました。 チャレンジ 2 ^ 53-1未満の非負の整数が与えられた場合、その整数が以下で最も短い表現を持つかどうかを決定します。 小数 16進数 科学表記法 小数 これは私の言語のデフォルト形式であるため、この形式に追加の表記法は必要ありません。すべての数値は、通常の10進数で表されます。 16進数 私の言語では、0x16進定数にプレフィックスを使用しています。これは、数値に4桁の16進数がある場合、その数値を表すのに6バイトかかることを意味します。 科学表記法 私の言語では、科学表記法に次の形式を使用しています。 [実底] e [10の整数指数] たとえば、700はとして表され7e3、ベースは-10〜10(非包括的)でなければならないため、699として表されます。このチャレンジでは、入力された数値が負でないため、ベースは常に少なくとも0になります。6.99e3 出力 どの形式が最も短いかを識別する方法を返す必要があります(つまり、10進数の場合は0、16進数の場合は1、科学の場合は2)。または、数値自体の最小表現を出力することもできます。 テストケース Decimal | Hexadecimal | Scientific | Winner --------------|--------------|-------------------|------------- 0 | 0x0 | 0e0 | Decimal 15 | 0xF | 1.5e1 | Decimal 6999 | 0x1B57 | 6.999e3 | Decimal …

26
私はカレン番号ですか?
カレン番号は、次の式を使用して生成されたシーケンスに含まれる任意の番号です。 C(n)=(n * 2 ^ n)+1。 あなたのタスク: 入力を受け取り、入力がカレン数であるかどうかに基づいて真偽値を出力するプログラムまたは関数を作成します。 入力: 0から10 ^ 9(両端を含む)までの負でない整数。 出力: 入力がカレン数かどうかを示す真実/偽の値。 テストケース: Input: Output: 1 ---> truthy 3 ---> truthy 5 ---> falsy 9 ---> truthy 12 ---> falsy 25 ---> truthy 得点: これはcode-golfであるため、バイト単位の最低スコアが優先されます。

7
Voidのデコード
空のリストは、リスト以外のオブジェクトを含むレベルのリストです。または、再帰的な定義を好む場合 空のリストは無効です 他の無効リストのみを含むリストは無効です すべての無効リストには有限の深さがあります。 voidリストの例を次に示します(Python構文を使用): [] [[]] [[],[]] [[[]]] [[[]],[]] [[],[[]]] voidリストではないものの例を次に示します。 ["a"] [[...]] [1] 2 [[],([],[])] 仕事 2つの別個の関数(または必要に応じてプログラム)を作成します。1つは引数として正の整数(必要に応じてゼロを含めることもできます)を取り、voidリストを返す必要があり、もう1つはvoidリストを取り、整数を返す必要があります。これらの2つの関数は、常に互いに逆でなければなりません。の出力をfに渡す場合、の結果としてのg元の入力を取得する必要がfありgます。これは、マッピングが1:1でなければならないことを意味します。つまり、すべての整数に対して、その整数を与えるvoidリストが1つだけ存在し、すべてのvoidリストに対して、そのvoidリストをg与える整数が1つだけ存在fします。 あなたは本質的に全単射を作成しています 言語のネイティブリストタイプの代わりに、空のリストの文字列表現(カンマとスペースの有無にかかわらず)を使用することもできます。 得点 スコアは、2つの関数を合わせた長さになります。これはコードゴルフなので、この合計を最小限に抑えることを目指してください。
25 code-golf 

12
ロシア語の複数形関数を書く
英語では、名詞は単数形(1つ)か複数形(それ以外)かによって2つの異なる形式をとることができます。たとえば、「1犬」と言いますが、「2犬」、「0犬」、「57犬」などです。 ロシア語には、3つのカテゴリがあります。「1犬、2犬、5犬」の代わりに、ロシア語では「1собака、2собаки、5собак」となります。 カテゴリは、次のロジックに従って分割されます。 「単数形」:1と、1で終わる数字に使用されます。ただし、11で終わる数字は除きます。 例:1собака、21собака、101собака 「少数」:2、3、および4、および2、3、または4で終わる番号に使用されます。ただし、12、13、および14で終わる番号は除きます。 例:2собаки、3собаки、4собаки、32собаки、43собаки、104собаки 「多数」:「特異」または「少数」と見なされないもの。 例:0собак、5собак、11собак、13собак、25собак、111собак、114собак チャレンジ [0、1000]の範囲の整数入力が与えられた1場合、それが「特異」カテゴリ2に属する場合、「少数」カテゴリ5に属する場合、および「多」カテゴリに属する場合を返します。 プログラムは関数であるか、STDINを使用できます。STDOUTに出力するか、関数から値を返すことができます これはコードゴルフの課題であるため、バイト数が最も少ないソリューションが優先されます。

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