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

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

30
ボックスを開くのを手伝ってください
ASCIIアートボックスがあり、それを開くにはプログラムが必要です。 例 入力: ------- | | |_____| 出力: / / / / / / / | | |_____| 仕様 最初の行は-、少なくとも3 つのみで構成されます 中央の行は|スペースで始まり、次で終わります| すべての中央の行は同じになります 最後の行は|have _で始まり、aで終わる| すべての行は同じ長さになります ボックスを開く: それぞれ-を/昇順の行と位置に置き換えます。

3
Tiny Lisp、小さな通訳
Lispプログラマーは、Lispは非常に小さなプリミティブ操作のセットから構築できる強力な言語であることを自慢しています。と呼ばれる方言の通訳をゴルフで練習して、そのアイデアを実践しましょうtinylisp。 言語仕様 この仕様では、結果が「未定義」と記述されている条件は、インタープリターで何でもできます:クラッシュ、サイレントフェール、ランダムgobbldegookの生成、または期待どおりの動作。Python 3のリファレンス実装はこちらから入手できます。 構文 tinylispでのトークンは(、)、または括弧やスペースを除く一個の以上の印刷可能なASCII文字の任意の文字列。(つまり、次の正規表現:[()]|[^() ]+。)数字のみで構成されるトークンは、整数リテラルです。(先頭のゼロは大丈夫です。)非数字を含むすべてのトークンは、のようにも、数字に見える例、シンボルである123abc、3.14と-10。トークンを区切る場合を除き、すべての空白(少なくとも、ASCII文字32および10を含む)は無視されます。 tinylispプログラムは一連の式で構成されています。各式は、整数、記号、またはs式(リスト)のいずれかです。リストは、括弧で囲まれた0個以上の式で構成されます。アイテム間にセパレータは使用されません。式の例を次に示します。 4 tinylisp!! () (c b a) (q ((1 2)(3 4))) 整形式でない式(特に、括弧が一致しない式)は、未定義の動作をもたらします。(参照実装は、開いているかっこを自動的に閉じ、一致しない閉じたかっこで解析を停止します。) データ型 tinylispのデータ型は、整数、記号、およびリストです。組み込み関数とマクロも型と見なすことができますが、出力形式は未定義です。リストには、任意のタイプの値をいくつでも含めることができ、任意の深さにネストできます。整数は、少なくとも-2 ^ 31〜2 ^ 31-1でサポートされる必要があります。 空のリスト(()nilとも呼ばれる)と整数0は、論理的に偽と見なされる唯一の値です。他のすべての整数、空でないリスト、ビルトイン、およびすべてのシンボルは論理的に真です。 評価 プログラム内の式は順番に評価され、それぞれの結果はstdoutに送信されます(出力のフォーマットについては後で説明します)。 整数リテラルはそれ自体に評価されます。 空のリスト()はそれ自体に評価されます。 1つ以上の項目のリストは、最初の項目を評価し、それを関数またはマクロとして扱い、残りの項目を引数として呼び出します。アイテムが関数/マクロでない場合、動作は未定義です。 シンボルは名前として評価され、現在の関数でその名前にバインドされた値を提供します。名前が現在の関数で定義されていない場合、グローバルスコープでバインドされた値に評価されます。名前が現在のスコープまたはグローバルスコープで定義されていない場合、結果は未定義です(参照実装ではエラーメッセージが表示され、nilが返されます)。 組み込み関数とマクロ tinylispには7つの組み込み関数があります。関数は、いくつかの操作を適用して結果を返す前に、各引数を評価します。 c-cons [truct list]。値とリストの2つの引数を取り、リストの先頭に値を追加して取得した新しいリストを返します。 h-頭(車、Lisp用語では)。リストを取得し、リストの最初の項目を返します。nilが指定されている場合はnilを返します。 t-テール(Lisp用語ではcdr)。リストを取得し、最初のアイテム以外のすべてを含む新しいリストを返します。nilが指定されている場合はnilを返します。 s-引く。2つの整数を取り、最初のマイナス2番目を返します。 l- 未満。2つの整数を取ります。最初の値が2番目の値より小さい場合は1を返し、それ以外の場合は0を返します。 e-等しい。同じタイプの2つの値(整数、両方のリスト、または両方のシンボル)を取ります。2つが等しい(またはすべての要素で同一)場合は1を返し、そうでない場合は0を返します。組み込みの等価性のテストは未定義です(参照実装は期待どおりに機能します)。 v-評価。式を表す1つのリスト、整数、またはシンボルを取り、それを評価します。たとえば、行うこと(v (q (c a b)))は行うことと同じ(c a b)です。(v …

15
言葉のバランスをとる
このチャレンジはDailyProgrammer subredditに投稿されており、コードゴルフチャレンジの素晴らしい候補になると思いました。レターのバランスが取れているかどうかの判断は、バランス点からの距離とレターの価値に基づいています。文字の値は、アルファベットの1インデックス位置を取得するか、ASCII値から64を引くことで決定できます。さらに、文字の値には、バランスポイントからの距離が乗算されます。例を見てみましょうSTEAD: STEAD -> 19, 20, 5, 1, 4 ASCII values This balances at T, and I'll show you why! S T EAD -> 1*19 = 1*5 + 2*1 + 3*4 Each set of letters on either side sums to the same value, so T is the anchor. ただし、すべての単語のバランスが取れているわけではないことに注意してください。たとえばWRONG、どの構成でも単語のバランスが取れていません。また、単語は2つの文字の間ではなく、文字でバランスを取る必要があります。たとえばSAAS、2つAの中間に文字があった場合はバランスが取れますが、何もないためバランスが取れません。 タスク …
33 code-golf 

14
{カーリー番号};
難解なプログラミング言語Curlyでは、プログラムは中括弧{}とセミコロンのみで構成されます;。この謙虚なツールセットにもかかわらず、Curlyには任意の非負整数を表すことができるリテラルがあります。ただし、この形式は初心者にとっては読みにくいため、変換を行うためのコードを作成してみましょう。 数字の形式 カーリー番号は、次の規則に従って構成されます。 セミコロンを追加すると、番号に1が追加されます。 中括弧で囲まれた数値は4倍されます。 中括弧グループはネストできますが、連結できません。ブレースは適切に一致する必要があります。 中括弧のセットの外側のセミコロンは、前ではなく後でなければなりません。 解析のあいまいさを避けるため、数字は常に中括弧で始まる必要があります。 いくつかの例: {;;} 2*4 = 8 {{;};}; (1*4+1)*4+1 = 21 {};;; 0*4+3 = 3 (ルール5では、0から3までの数字は中括弧の空のペアで始まる必要があることに注意してください。) そして、いくつかの無効な例: {{;}{;;}} Curly brace groups side-by-side, not nested {;}} Unmatched brace {;{;}} Semicolon before curly-brace group ;;; Number does not start with curly brace カーリー数のBNF文法は次のとおりです。 <number> ::= "{" …

11
自己修正による乗算
...少なくとも「自己修正」の定義については。 タスク この課題では、あなたのタスクは、3つの文字列を記述することでA、BそしてCその次の性質を満たします。 文字列のB長さは少なくとも1です。 すべてn ≥ 0について、文字列は、選択したプログラミング言語の有効なプログラム(完全に実行可能なプログラムまたは関数の定義を意味します)です。これは、文字列のように、上付き文字は、繰り返しを表し、、、各プログラムは、一つの入力として文字列、および出力として戻って1つの文字列を取るなど。ABnCACABCABBCABBBC いずれm, n ≥ 0にせよ、プログラムが入力付きで実行される場合、それは戻ります。この形式ではない入力の場合、プログラムはクラッシュを含む何でもできます。ABmCABnCABm*n+1C 形式のいくつかの例program(input) -> output: AC(AC) -> ABC ABC(AC) -> ABC ABBBBBC(AC) -> ABC AC(ABC) -> ABC AC(ABBBBC) -> ABC ABC(ABC) -> ABBC ABBC(ABC) -> ABBBC ABBBBC(ABBBC) -> ABBBBBBBBBBBBBC ABBBC(ABBBBBBC) -> ABBBBBBBBBBBBBBBBBBBC ルールとスコアリング あなたのスコアは、との合計の長さでA、Cスコアが低いほど良くなります。Bスコアにはカウントされませんが、最初の例AとC同様に作成する必要があることに注意してください。 標準の抜け穴は許可されていません。プログラムは、直接または間接的に独自のソースコードにアクセスすることはできません(入力として与えられた場合を除く)。あなたは、文字列を識別するために必要とされているA、BとCいくつかの方法で、あなたの答えであり、あなたのソリューションを説明することを奨励しました。

11
この質問には浮き沈みがあります
入力は次の文字で構成されます。 ^:1つ上へ v:1つ下に行く ▲またはk:2つ上に移動します ▼またはj:2つ下に移動します たとえば、次の入力: ^^▲^v▼▲^^v 次の出力が生成されます。 ^ ^ ^ v ▲ v ▲ ^ ▼ ^ などのカーソルを移動するエスケープシーケンス\e[Bは許可されません。スペースと改行を使用して出力を生成する必要があります。 ここにさらにいくつかのテストケースがあります。 ▲v^v^v^v^v^v^v^v▲ ▲ ▲ ^ ^ ^ ^ ^ ^ ^ v v v v v v v v ^^^^^^^▲▲▲▼▼▼vvvvvv ▲ ▲ ▼ ▲ ▼ ^ ▼ ^ v ^ v …

22
トランプはスターマンを止めるためにあなたの助けが必要です!
星から来た男が地球にやってきた!幸いなことに、米国大統領のドナルドトランプは、無限の側面で死ぬ。このダイを使用して、彼は、Podunkの市長であるあなたが侵入者を止めるために誰を送るべきかを決定するために使用しなければならない数字を思い起こすことができます!しかし、注意してください、あなたはあなたのカエルの背中に限られた量のバイトしか送ることができません! ユーザー入力(正の整数)が与えられると、番号が含まれるカテゴリに応じて文字列を返す必要があります。 数値がフィボナッチ数の場合、Nessを出力する必要があります。 番号がある場合はルーカスの数は、出力する必要がありルーカス。 数値がルーカス数とフィボナッチ数の両方である場合、Travisを出力する必要があります。 数がある場合もない AA ルーカス番号やフィボナッチ数は、出力する必要がありピッピ。 例 テストケースは次のとおりです。 1 =>トラビス 2 =>トラビス 3 =>トラビス 4 =>ルーカス 5 =>ネス 6 =>ピッピ 7 =>ルーカス 8 =>ネス 610 =>ネス 722 =>ピッピ 843 =>ルーカス ルール これはcode-golfで、バイト単位の最短回答が勝ちです。 プログラムは、完全なプログラムまたは(n匿名)関数である場合があります。 ボーナス カエルがトランプ大統領にデータをより速く届けるのを助けるために使用できるいくつかのボーナスがあります: 以下のための-15バイト:入力番号がある場合は2016、あなたを出力しなければならないTrump、彼は彼の大統領職のピークであるとして。

3
テトリスブロックのプログラミング(文字通り)
ゲームTetrisには、7種類のレンガまたはTetr i minoesがあり、それらはすべて4つの正方形セグメントで作られているため、数学的にtetr o minoesとして知られています。 これらの名前は、I、J、L、O、S、T、およびZという名前で、おおよその形状に対応しています。90°の回転をカウントすると、合計19個のユニークな形状があります。 I I I I IIII J J JJ JJJ J JJ J J J JJJ L L LL L LLL LL L L LLL L OO OO SS SS S SS S TTT T T TT T T TTT T TT T ZZ ZZ …

23
バイプレックス:重要な役に立たない演算子
入力 1から255までの正の整数(両端を含む)のリストで、それぞれ1から2 32-1(両端を含む)の範囲です。 入力形式は、テストケースと同じである必要はありません。 先行ゼロなしの入力を受け入れる必要があります。 先行ゼロを含む入力を受け入れる必要はありません。 整数の間に任意の区切り文字を使用できます。 整数は文字列で表すことができますが、特定の整数の個々の数字は連続している必要があります。 出力がそのベースにもある場合は、入力に任意のベース(バイナリおよび単項を含む)を使用することを選択できます。 出力 単一の整数。 出力には先行ゼロがない必要があります。 出力は入力と同じベースになければなりません。 出力は任意の方法で計算できますが、次の計算の結果と一致する必要があります。 バイプレックスの計算 バイナリ表現のビットは、ゼロから始まる右から番号が付けられているため、ビットiは2 iを表す列にあります。 I 番目 bitsumの合計であるI 番目の入力番号のそれぞれのバイナリ表現のビットです。 bitsum最大値は bitsumsで撮影した最高値です。 bitsum最小値は最小である非ゼロ bitsumsによって撮影された値。 出力のバイナリ表現のi 番目の桁は次のとおりです。 i 番目のビットサムが最大ビットサムまたは最小ビットサムに等しい場合は1 。 それ以外の場合は0。 実施例 この例では、入力と出力にバイナリを使用しています。 Input: 100110 1101110 1100101 _______ Bitsums: 2301321 Output: 101101 ビットサムの最大値は3、ビットサムの最小値は1であるため、ビットサムが3または1の場合はすべて出力に1が、その他の場合は0が出力されます。 テストケース テストケースの形式は次のとおりです。 Input => Output バイナリのテストケース: [1] …

22
XOR乗算
目標は、以下で定義するXOR(キャリーレス)乗算の操作を可能な限り少ないバイトで実装することです。 ビット単位のXOR(^)をキャリーなしのバイナリ加算と考える場合 101 5 ^ 1001 9 ---- 1100 12 5^9=12 @バイナリの長い乗算を行うことでXOR乗算を実行できますが、ビット単位のXORとして実行せずに加算ステップを実行し^ます。 1110 14 @ 1101 13 ----- 1110 0 1110 ^ 1110 ------ 1000110 70 14@13=70 (数学者にとって、これは多項式環F_2[x]での乗算であり、x=2Z上の多項式としてat を評価することにより自然数で多項式を識別します。) XOR乗算はa@b=b@a、(a@b)@c=a@(b@c)ビット単位のXORで交換、関連付け、および分散しa@(b^c)=(a@b)^(a@c)ます。実際には、乗算と一致したユニークな操作でa@b=a*bいつでもaとbの力ある2ように1,2,4,8...。 必要条件 入力および出力として2つの非負整数を取るか、XOR積を出力します。これは、バイナリ展開ではなく、数値または10進数の文字列表現でなければなりません。最少バイトが勝ちます。 整数オーバーフローについて心配する必要はありません。 以下にフォーマットされたいくつかのテストケースを示しa b a@bます。 0 1 0 1 2 2 9 0 0 6 1 6 3 3 …

10
マインスイーパボードを確認する
目標は、完成した掃海艇ボードが有効かどうかを確認することです。これは、各数値が、対角線を含む隣接するセル内の地雷の正しいカウントであることを意味します。ボードはラップアラウンドしません。 通常どおり、関数またはプログラムを指定する必要があり、バイト単位の最短コードが優先されます。 マインスイーパを生成、解決、および完全に実装するための過去の課題も参照してください。 入力: このような単一の文字列:02X2 13X2 X211。 マインスイーパボードの行は、スペースで区切って指定します。したがって、上記は3x4ボードを表します。 02X2 13X2 X211 :各セルは文字であるX鉱山のために、または数0による8。 すべての行の長さは同じです。 少なくとも3行3列です。 入力はスペースで開始または終了しませんが、必要に応じて改行を最後に含めることができます。 出力: 一貫Truthy正しいボード上、および一貫性のFalseyの間違ったボード上の値。一貫性とは、すべてのTruthy出力が同じで、すべてのFalsey出力が同じであることを意味します。 テストケース 各行は個別のテストケースです。 True: 02X2 13X2 X211 XXXX XXXX XXXX XXXX XX4X2 5X6X4 XX6XX 4XX54 2X4XX False: 02X2 13X2 X212 XXXX XXXX X7XX XXXX XX5X2 5X6X4 XX6XX 4XX54 2X5XX

6
グリッドベースのデジタルロジック(デュオディアディックタイル)
Duodyadicタイルは、2つの入力(1つは上面から、もう1つは左側から)、2つの出力(1つは右側に、もう1つは下面)を備えた正方形の機能ブロックです。それぞれの出力は、両方の入力の個別の関数です。 たとえば、#一般的なタイルを表し、右の出力がR機能でf入力のTとL、下の出力はB別の関数であるgのTとL: T L#R R = f(T, L) B B = g(T, L) (2つの関数があるため、タイルは「du​​o」と呼ばれ、両方の関数には2つの引数があるため「dyadic」と呼ばれます。) タイルは、グリッド上で一緒に構成することができ、1つのタイルの出力は、隣接するタイルの入力に直接入ります。ここで、例えば、左の右の出力は右#の左の入力に入ります#: AB D = f(f(A, C), B) C##D E = g(A, C) EF F = g(f(A, C), B) それぞれが特定の機能を備えたデュオディアックタイルのセットがあれば、複雑な(潜在的に有用な)コンポジションを作成できると想像できます。 この課題では、すべての入力と出力が1ビットのバイナリ数(ゼロまたは1)である、10個のロジックベースのデュオディアディックタイルの従来のセットのみを考慮します。タイルの各タイプを示すために、個別のASCII文字を使用します。 タイル文字とそれらの入出力関係は次のとおりです (T上入力L用、左入力R用、右出力B用、下出力用)。 ゼロ:0または(スペース)→ R = 0、B = 0 1つ:1→ R = 1、B = 1 クロス:+→ R …

8
重要なのは投票する人ではありません。投票を数えるのは人です[非公開]
シナリオ あなたは大統領選挙が行われている国に住んでいます。各投票者は1票を獲得するため、しっかりと定着した2パーティシステムがあります。(サードパーティは存在しますが、ほとんど投票しません)。 最新の世論調査では、熱狂のレースを示しています。 49%:アルベルト・アルブスト 49%:ホルヘ・サングレ 2%:さまざまなマイナー候補 プログラムの要件 投票カウントソフトウェアの一部を書くために政府に雇われました。標準入力では、次のように、1つの管区の投票の順不同リストが1行に1つずつ与えられます。 Alberto Arbusto Jorge Sangre Jorge Sangre Alberto Arbusto Jorge Sangre Alberto Arbusto Alberto Arbusto Jorge Sangre Juan Perez Jorge Sangre Alberto Arbusto Alberto Arbusto … そして、すべての投票を読んだ後、各候補者が獲得した投票数の概要を出力し、次のように投票数で降順にソートします。 492 Jorge Sangre 484 Alberto Arbusto 18 Juan Perez 6 Mickey Mouse 下手な部分 あなたは、2つの主要な候補者のうちの1人の選挙を盗もうとするパルチザンハックです(どちらかを選択できます)。そのため、あなたのプログラムは、あなたの好きな候補者に対して体系的なバイアスをかけて、誤った投票数を意図的に印刷する必要があります。 もちろん、これを行う必要があるのは、コードまたはその出力を見ている人が誤った動作を認識しない可能性が高い方法です。

14
新年のモールス
これがウィークリーチャレンジ#1です。テーマ:オーディオ処理 あなたの仕事は含まれています(お好みの形式で)ディスクにオーディオファイル、書き込むプログラム、書くことですモールスコードのために2015、すなわち、 ..--- ----- .---- ..... 単一周波数の正弦波、和音、ノイズ、一部の楽器(MIDIファイルを使用するなど)など、可聴である限り、セグメントに任意の種類のサウンドを自由に選択できます。ただし、タイミングにはいくつかの制約があります。 短いセグメントの長さは少なくとも0.2秒である必要があります。 長いセグメントは、短いセグメントの少なくとも3倍の長さである必要があります。 数字内のセグメント間の区切りは、短いセグメントと同じ長さでなければなりません。 数字間の区切りは、長いセグメントと同じ長さでなければなりません。 各セグメントとブレークは、そのタイプのセグメント/ブレークの平均長から最大10%逸脱する可能性があります。 オーディオファイル全体が30秒を超えないようにしてください。 休憩は完全に無音である必要はありませんが、モールス信号音は休憩よりも大きな音量である必要があります。 オーディオファイルを作成する必要があることに注意してください。システムビープ音などを使用して、サウンドを再生することはできません。任意の種類のライブラリを使用してファイル形式とオーディオ生成を処理できますが、モールス符号化に組み込み機能を使用しないでください。 これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 結果のオーディオファイル(SoundCloudなど)のアップロードへのリンクを検討してください。そうすれば、コードを実行しなくても結果を確認できます。SoundCloudにアップロードする場合は、トラックの[権限]タブでダウンロードを有効にしてください。 出力で一般的でないファイル形式を使用している場合は、再生方法やより一般的な形式に変換してアップロードする方法に関する情報を追加してください。 トラックの例 これは、仕様に準拠し、モールスセグメントにノイズ(正確にはマイクのバックグラウンドノイズ)を使用する、手動で生成されたサンプルトラックです。埋め込みプレーヤーが機能しない場合のSoundCloudへのリンクは次のとおりです。 バウンティの詳細 オーディオプログラミング言語、つまり音声を合成するように設計された言語での最短の提出に対する賞金を授与します。そのリストは完全ではありませんので、ご存じの場合は別のオーディオプログラミング言語を自由に使用してください。使用したい言語がオーディオプログラミング言語として分類されるかどうかわからない場合は、コメントまたはチャットでお知らせください。それについて話し合うことができます。 提出物はすべてのルールに準拠する必要があることに注意してください。特に、すべてのオーディオプログラミング言語では不可能なファイルを書き込む必要があります。たとえば、私が知る限り、gibberはサウンドを再生することしかできず、ファイルに保存することはできません。

20
ポリキンを書く
ポリキンは、クインとポリグロットの両方です。1少なくとも2つの異なる言語で有効なクインを書きます。これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 1それを作りました。むしろ、ジオビットはそうしました。どうやら、彼も最初のものではなかったようです。 クインのルール 真のクインのみが受け入れられます。つまり、あなたは、STDOUTに逐語的に全体のソースコードを印刷する必要がなくて: ソースコードを直接または間接的に読み取る。 REPL環境に依存します。REPL環境は、フィードするすべての式を単に評価および出力するだけです。 特定の場合にソースを出力するだけの言語機能に依存しています。 エラーメッセージまたはSTDERRを使用して、クインのすべてまたは一部を書き込みます。(STDOUTが有効なクインであり、エラーメッセージがその一部でない限り、STDERRに書き込むか、警告/致命的でないエラーを生成できます。) さらに、コードには文字列リテラルが含まれている必要があります。 ポリグロットのルール 使用される2つの言語は明確に異なる必要があります。特に: 同じ言語の異なるバージョンであってはなりません(Python 2とPython 3など)。 それらは同じ言語の異なる方言であってはなりません(例:PascalとDelphi)。 1つの言語は、他の言語のサブセットではない場合があります(例:CとC ++)。

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