タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

11
逆XORを計算する
させるfビットフィールド(マップする関数である{0 1}大きさの)のn+1大きさのビットフィールドにn適用することによりXORにi目とi+1目のビットと新しいビットフィールドに結果を書き込むこと。 例: f("0101") = "111" 非公式の計算: 0 XOR 1 = 1 1 XOR 0 = 1 0 XOR 1 = 1 ましょうf_inverseの逆関数になりfます。逆行列は一意ではないため、f_inverse1つの有効なソリューションを返します。 入力:文字列としてのビットフィールド(つまり"0101111101011")および指定された自然数k 出力:文字列としてのビットフィールド。入力ビットフィールドに時間をf_inverse適用すると、文字列に結果が含まれますk。(すなわちf_inverse(f_inverse(f_inverse(input)))) 受賞基準:最少キャラクター ボーナス: -25文字f_inverseが再帰的/反復的に適用されない場合、代わりに出力文字列が直接計算されます テストスクリプト: a = "011001" k = 3 def f(a): k = len(a) r = "" for i in xrange(k-1): r += str(int(a[i]) …
13 code-golf 

4
BattleBlock Theaterパズルを解く
ゲームBattleBlock Theaterには、Lights Outの一般化バージョンであるパズルが含まれることがあります。隣接する3つのブロックがあります。各ブロックは、バーを含む1〜4のレベルを示します。例: | |||| || ブロックにタッチすると、そのブロックと隣接するブロックのレベルが増加します(4から1に戻ります)。パズルは、3つのブロックすべてが同じレベルを示すときに解決されます(どのレベルでもかまいません)。ブロックをタッチする順序は重要ではないため、各ブロックがタッチされる頻度によってソリューションを示します。上記の入力の最適なソリューションは次のとおりです201。 | --> || --> ||| ||| |||| | || ||| || || || --> ||| ゲームは非常に簡単に任意の数のブロックを一般化しますが、一部の数では、すべての構成が解決可能ではありません。 チャレンジ ブロックレベルのシーケンスが与えられたら、パズルを解くために各ブロックをタッチする必要がある頻度を返します。例えば、上記の例はとして与えられ、結果として142生じる可能性があり201ます。解決策がない場合は、選択した一貫した出力を返します。これは、すべての潜在的な解決策、-1または空の文字列などと区別できます。 関数またはプログラムを記述し、STDIN、コマンドライン引数または関数引数を介して入力を任意の便利なリスト形式または文字列形式で取得し、同様に戻り値を介して出力するか、STDOUTに出力します。 コードは、妥当なマシンで1分以内にすべてのテストケースに対して正しい結果を返す必要があります。(これは完全に厳密な制限ではないため、ソリューションに1分10秒かかる場合は問題ありませんが、3分かかる場合はそうではありません。優れたアルゴリズムは数秒で簡単に解決できます。) これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 例 ソリューションは一意ではないため、異なる結果が得られる場合があります。 Input Output 1 0 11 00 12 No solution 142 201 434 101 222 000 4113 0230 32444 No solution …

6
12日間のゴルフマス
チャレンジ クリスマスの12日間のそれぞれで、日付に応じて「クリスマスの12日間」の適切な詩を出力します。 先頭および/または末尾の改行(\n)および末尾のスペースは許可されます。外部ソースから読み取ることはできません。 基本的にあなたがしなければならないことは、システム日付を読み、「12日間のクリスマス」の節を出力することです。 クリスマスの12日間 クリスマスの12日間は、クリスマスの日(12月25日)から1月5日までのキリスト教のお祝いの季節です。 例 日付が12月25日の場合(最短/最初の詩を印刷): On the first day of Christmas my true love sent to me: a Partridge in a Pear Tree 日付が12月31日の場合(7節目を印刷): On the seventh day of Christmas my true love sent to me: 7 Swans a Swimming 6 Geese a Laying 5 Golden Rings …

2
何を待っていますか?(麻雀ソルバー)
チャットでのディスカッションから@MartinBüttnerに感謝します 麻雀は、アジアで非常に人気のあるタイルゲームです。通常、4人のプレイヤーでプレイされ、ゲームの目標は、タイルを使用して有効なハンドを完了する最初の人になることです。この課題では、ゲームの簡易バージョンであるPPCG麻雀を検討します。 PPCG麻雀には3つのスーツがあります- m、pそしてs-タイルはから1まで番号が付けられてい9ます。各タイルのコピーは正確に4つあり、タイルは番号とそれに続くスーツ(たとえば3m、9s)で示されます。 完成したPPCG麻雀ハンドは、3セットと4セットで構成され、合計14タイルです。 3つのセットは次のいずれかです。 同じタイルの3つ(たとえば4s 4s 4s、ではない4m 4p 4s)、または 同じスーツ内の3つの連続したタイルのシーケンス(例:1s 2s 3sor 6p 7p 8pnot 3s 4m 5mor or 3p 5p 7p)。シーケンスはラップしません(9m 1m 2m無効です)。 ペアは、単純に2つの同一のタイルです(例:)5s 5s。 チャレンジ プログラムには、13個のタイルのスペースで区切られた手が届き、各タイルは4回までしか表示されません。完全なプログラムまたは文字列を受け取る関数のいずれかを記述できます。 あなたの仕事は、ハンドに追加すると完成したPPCG麻雀ハンドを形成する可能性のあるすべての14番目のタイル(「待機」)を見つけることです。出力されるタイルはスペースで区切る必要がありますが、順序は任意です。先頭または末尾の空白は許可されます。 プログラムは、1分以内で妥当な時間内に実行する必要があります。 例 Input: 1m 1m 1m 4s 4s 4s 7p 7p 7p 3m 3m 3m 9s Output: 9s Input: …
13 code-golf  game 

3
4色の定理
四色定理 4つ以下の色がマップの領域を色付けする必要があると述べています。 チャレンジ 州の境界のリストを指定すると、各州IDに色が割り当てられ、隣接する2つの州が同じ色にならないようにします。出力は、色を州の2文字のIDコードに割り当てるCSSスタイルシートである必要があります。スタイルシートを適用できるSVGマップを次に示します。http://upload.wikimedia.org/wikipedia/commons/3/32/Blank_US_Map.svg ルール 最短のコードが勝つ 任意の州境リストを使用できます 使用できるのは4色のみです。 状態リストはハードコーディングできます アドバイス:CSS fill:プロパティを使用して色を変更します。たとえば、#AL{fill:green} 州境のリストはこちら AL-FL AL-GA AL-MS AL-TN AR-LA AR-MO AR-MS AR-OK AR-TN AR-TX AZ-CA AZ-CO AZ-NM AZ-NV AZ-UT CA-NV CA-OR CO-KS CO-NE CO-NM CO-OK CO-UT CO-WY CT-MA CT-NY CT-RI DC-MD DC-VA DE-MD DE-NJ DE-PA FL-GA GA-NC GA-SC GA-TN IA-MN IA-MO IA-NE …

9
ショートドロープログラム
あなたはリベラルアーツ専攻をあなたの家に招待しただけで、彼/彼女に言っています 「ご存知のように、私は素晴らしいプログラマーであり、x、y、zを実行できます...」 S /彼はすぐに退屈し、あなたに尋ねます: 「あなたが本当に素晴らしいプログラマーなら、私に絵を描かせるプログラムを作ってもらえますか。マウスを使って、さまざまな色を選択して、画面に線を描くだけです。」 コードで標準ライブラリをインポートできます。コードでは、キーボードで色を選択する必要がある場合があります。 これはcode-golfです。最短のコードが勝ちます。 箇条書き 左ボタンを押しながらマウスを動かして線を描きます。 BresenhamのLine Algorithmは必要ありません。組み込みアルゴリズムはトリックを行います ユーザーが何らかの方法で線の太さを変更できる場合は、* 0.8のボーナスが得られますが、必須ではありません。 自分で線描画を実装する方が良いと思いますが、必要な場合は、コードの説明でそれを言うだけでライブラリをインポートできます。 最小は5色(赤、緑、青、白、黒)です。ランダムに変更すると、ペナルティが* 1.2になります。必要に応じてそれらを変更できます(ボタンとキーを押すことはどちらもOKです)。 ポイント間またはフリーハンドでマウスを押して描くのが最善です(つまり、ペイントで行うように)* 0.7のボーナスが得られますが、他の方法は大丈夫です:(例)2つのポイントをクリックして、それらのポイント間に線を引きます? 描画キャンバスは600x400でなければなりません 色を変更すると、将来描画される線の色のみが変更されます。 「すべてクリア」コマンドの実装は必須ではありませんが、実装すると* 0.9のボーナスが得られます。

2
グラフの張力、パートII:ラバーバンド
これは、「関数をピンと張る」ことに関する2つの課題のうちの2番目です。これが少し単純なパートIです。 (x 1、y 1)から(x m、y m)の位置でm個の釘をボードに打ち込みましょう。それらの最初と最後にゴムバンドを結び、他の釘の周りに伸びて、バンドがすべての釘を順番に横切るようにします。ラバーバンドは、2D空間で区分的線形パラメーター化関数(x(t)、y(t))を記述することに注意してください。 次に、位置(x 1、y 1)から(x n、y n)で、ボードに別のn個の釘を打ち込みます。最初と最後の(ゴムの端が結び付けられている)爪以外のすべての元の爪を削除すると、ゴムバンドは新しい爪の周りにぴんと張るまで短くなり、別の区分的線形関数が生成されます。 一例として、取るM = 12本の位置で最初の爪(0,0)、(2、-1)、(3/2、4/3)、(7/2、1/3)、(11/2を16/3)、(1、16 / 3)、(0、1)、(7、-2)、(3、4)、(8、1)、(3、-1)、(11、0)、およびn = 10は、位置(1、1)、(3、1)、(4、4)、(1、3)、(2、2)、(5、-1)、(5、0 )、(6、2)、(7、1)、(6、0)。次の3つのプロットは、上記のプロセスを示しています。 大きなバージョンの場合:右クリック->新しいタブで開く また、ラバーバンドを視覚化するのが困難な場合の締め付けのアニメーションを次に示します。 チャレンジ 「釘」の2つのリストが与えられた場合、最初のリストのすべての釘を横断する形状から始まる場合、2番目のリストの周りにピンと張った輪ゴムをプロットします。 プログラムまたは関数を記述し、STDIN、ARGV、または関数引数を介して入力を取得できます。結果を画面に表示するか、画像をファイルに保存できます。 結果をラスタライズする場合、各辺が少なくとも300ピクセルである必要があります。最終的な輪ゴムと爪は、画像の水平および垂直範囲の少なくとも75%をカバーする必要があります。xとyの長さスケールは同じでなければなりません。2番目のセット(少なくとも3x3ピクセルを使用)と文字列(少なくとも1ピクセルの幅)に爪を表示する必要があります。軸を含めても含めなくてもかまいません。 色は選択できますが、少なくとも2つの区別できる色が必要です。1つは背景用、もう1つは爪と文字列用です(ただし、色は異なる場合があります)。 2番目のリストのすべての爪は、ゴムバンドの初期形状から少なくとも10 -5ユニット離れていると仮定できます(そのため、浮動小数点の不正確さを心配する必要はありません)。 これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 その他の例 さらに2つの例を示します。 {{1, 1}, {3, 3}, {2, 4}, {1, 3}, {4, 0}, {3, -1}, {2, 0}, {4, 2}} {{2, 1}, {3, …

11
コッホスノーフレークのグラフィカル表現
Kochスノーフレークを生成する コッホスノーフレークは、nそれぞれの辺の中央に別の等辺点が追加される三角形です:http : //en.wikipedia.org/wiki/Koch_snowflake#Properties すでにkolmogrov-complexity Koch Snowflakeチャレンジがありましたn=4。新しい課題はn、1との間にあるコッホ雪片を描くこと10です。 ルール 雪片は、プログラムやファイルにハードコーディングされていない場合があります-プログラムで生成する必要があります。 プログラムはn、1〜10のすべてのサイズをサポートする必要があります。 サイドの数は、std-inを介してユーザーが入力する必要があります。 スノーフレークのグラフィック表現を画面に印刷する必要があります。 n1、2、3、および4に等しいKochスノーフレークのサンプル(わかりやすくするために緑の線のみを使用し、再現しません): タイブレーカーが発生した場合、アップ投票数が最も多いプログラムが勝ちます(ポップコンテスト)。

8
行番号-nlを実装する
あなたの仕事はnl、GNUコアユーティリティのコマンドラインツールに似たプログラムを実装することです。 標準的な抜け穴は禁止されています。 GNU sedのコマンドnlや=コマンドなど、ファイルまたは文字列の行に番号を付けるために、組み込みまたは外部の関数、プログラム、またはユーティリティを使用することはできません。 仕様 入力 プログラムは引数としてファイル名を受け入れます。コードはクロスプラットフォームである必要はありません。コードを実行しているOSのファイル名形式を使用する必要があります。つまり、Windowsを使用している場合、ディレクトリ区切り文字は\または/です。 -指定されている場合を含め、64個の入力ファイルを取得できる必要があります。64を超える場合は、最初の64のみを処理します。 ファイル名のリストで、-標準入力を表します。 ファイル名が指定されている場合は、指定された順序でファイルから読み取り、内容を連結し、各ファイルの間に新しい行を挿入します。1つまたは複数のファイル名から読み取ることができない場合(ファイルが存在しないか、読み取り権限がないため)、無視します。指定されたすべてのファイル名が無効な場合、何も出力しません。 ファイル名が指定されていない場合は、標準入力から読み取ります。ファイル名が指定されていない場合、または指定されている場合にのみ、標準入力から読み取ります-。 出力 プログラムは、このように番号が付けられた行で入力を標準出力に出力します(入力に\n、\r\nまたは\r行末があると仮定することができます;都合の良い方を選択しますが、どちらかを指定します)。 <5 spaces>1<tab><content of line 1 of input> <5 spaces>2<tab><content of line 2 of input> ... <4 spaces>10<tab><content of line 10 of input> ... <3 spaces>100<tab><content of line 100 of input> ... ... 行番号には6文字のスペースが割り当てられ、これらの文字の最後に挿入されます。残りはスペースになります(たとえば1、先頭に5つのスペースがあり、22先頭に4つのスペースがあります...)。入力が十分に長い場合、最終的にlineの行番号のスペースが不足します999999。999999行目以降は何も出力しないでください。 入力が空の場合、何も出力しません。 終了ステータス 低い番号が優先されます。エラー1および2が発生した場合、ステータス1で終了します。 入力が正常に受信され、行が正常に番号付けされて出力された場合、ステータス0で終了します。 …

9
Applescriptでのゴルフのヒント
Applescriptでゴルフをするためのヒントはありますか?私は、少なくともApplescriptに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。
13 code-golf  tips 

1
コードゴルフアスキーアートミニゴルフ
イントロ ミニゴルフをしましょう!ゴルフボールはa .で、ホールはaで表されOます。あなたはすべての穴に一つずつ穴を開けたいのですが、パッティングが苦手です。実際、斜めに置くことを拒否します!上、下、および両側のみ。 余分なバンパー\を配置してチートを行うことを計画している/ので、ワンショットでボールを入れることができます。この写真に示すように、ボールはバンパーから直角に跳ね返ります。 あなたのショットを呼び出すことを忘れないでください!どんな方向に向かっているのか教えてください。 穴 1:最初のホールは簡単、ストレートショットです!ここにバンパーは必要ありません。 入力: . O 出力: right . O 2:別の基本的なもの、短いターン。ボールはバンパーから落ちて穴に入ります。 入力: . O 出力: left / . O または down . O / 3:一部の穴にはすでにバンパーがあります! 入力: . \O 出力: right . \O \/ または right / \ . /\O 4:一部の穴は非常に複雑です! 入力: / \ \ / / …

3
単語を他の単語に分解します(たとえば、「afterglow」=「aft」+「erg」+「low」)
これがあなたのワードスミスの皆さんのためのものです!単語のリストを取得し、各単語のすべての可能な連結分解のリストを生成するプログラムまたは関数を作成します。例えば: (注:これは、説明のための小さなサンプリングにすぎません。実際の出力ははるかに大きくなります。) afterglow = after + glow afterglow = aft + erg + low alienation = a + lie + nation alienation = a + lien + at + i + on alienation = a + lien + at + ion alienation = alien + at + i + on …

1
Manufactoriaの素数テスト
バックグラウンド Manufactoriaはプログラミングに関するゲームです。プレーヤーは、タスクを完了するために2次元プログラミング言語の形式を使用する必要があります。聞いたことがないなら、最も簡単な学習方法は、ゲームの最初のいくつかのレベルを試すことです。 チャレンジ あなたの課題は、数の素数性をテストするプログラムを作成することです。 入力は、キュー内の一連のN個の青いマーカーになります。Nが素数の場合、プログラムはそれを受け入れます(ロボットを最後まで動かします)。Nが複合の場合、プログラムはそれを拒否する必要があります(どこかに床に落とします)。 提出オプション これは典型的なManufactoriaチャレンジよりも複雑なチャレンジであるため、回答を送信する方法を増やすことを決定しました。 バニラ 提出物を作成してテストするための13x13カスタムレベルを作成しました。カスタムテストレベルは次のとおりです。 13x13カスタムレベル ゲームではカスタムレベルで8つのテストケースのみが許可されますが、理論的には、使用可能なメモリによってのみ制限される任意の自然数Nを処理できるようにする必要があります。 情報目的で、カスタムレベルで提供されるテストケースは次のとおりです。 1 -> reject 2 -> accept 4 -> reject 5 -> accept 7 -> accept 9 -> reject 11-> accept 15-> reject 拡張グリッド 一部のユーザーは、13x13グリッドよりも広いスペースが必要な場合があります。URLの番号を変更して作成されたゲーム内15x15カスタムレベルへのリンクは次のとおりです。 15x15カスタムレベル 悲しいことに、追加のセルにアクセスできないため、より大きなカスタムレベルは機能しません。 The Manufactoria Esolang ManufactoriaはASCIIベースの言語に適応しています。作品をデザイン/テストする別の方法が必要な場合、または最終的なソリューションをゲームボードに適合させることができない場合は、このエソランを使用できます。このエソランに関する情報は、ここで見つけることができます: Manufactoria esolang エソランと実際のゲームの間にはいくつかの矛盾があります。たとえば、コンベアの交差点の処理方法は異なります。これらの不一致を利用しないようにしてください。 より高速なテスト方法 完了するまでに数千ステップを要するプログラムに関しては、ゲームは非常に遅くなります。私の概念実証ソリューションでは、15を拒否するために28042ステップが必要でした。ゲーム内で50倍の高速化をしても、時間がかかりすぎます。 私はこの非常に役立つウェブサイトを見つけました。回答へのリンクをコピーアンドペーストするだけで、特定の入力で回答をテストできます。28042ステップのプロセスには1秒もかかりませんでした。 注意すべきことの1つは、マシンが正常に動作していても、「誤って受け入れられた」というようなメッセージが頻繁に表示されることです。これは、Webページがテストケースのみを知っているためです。たとえば、私のマシンは実際には正しいものでしたが、私のソリューションは3番を「誤って受け入れた」と言うでしょう。 勝つ方法 …

15
最長のスティックを選ぶ
あなたは他の2人の親友と一緒に住んでいる若いプログラミングオタクです。毎週、あなたの一人が家のすべての雑用をしなければなりません、そして、あなたは棒を選ぶことによってそれが誰の番であるかを決定します。最も短い棒を選んだ人は、すべての雑用を失い、します。 皆さんはプログラマーであり、パズルを作成するのが大好きなので、「最短のスティックを選ぶ」をコンピューターパズルに変更しました。 ここにパズルのルールがあります。 各列が棒を表す2Dマトリックスが表示されます。 各列の1はスティックの一部を表し、0は空のスペースを表します 各列の上から下に移動すると、最初にがあり、を押す0とすぐ1にスティックが開始され、列の残りの部分がいっぱいになります1だけ 1つの列を選択するプログラムを作成できます。その列のスティックのサイズが勝者/敗者を決定します。スティックのサイズ==その列の1の数。 ただし、そのプログラムは線形の最悪の場合の時間の複雑さしか持つことができません。 みなさんはプログラマーなので、他の誰かのプログラムが時間の複雑さの限界に達しているかどうかを知るでしょう。 あなたの仕事は: 2D形式または文字列の配列で入力を受け入れるプログラムまたは関数を作成します。 入力は、STDIN / prompt / consoleまたは関数の引数から取得できます。 STDIN /プロンプトから入力を読み込んでいる場合、入力の読み込みと配列への変換にかかる時間は0時間であると想定できます(そうするためのコードが答えに含まれていなければなりません) 最も長い棒が入っている列を決定します。 出力は、関数の戻り値またはSTDOUT / console / alertになります。 プログラム/関数は、線形の最悪の場合の時間の複雑さを持つ必要があります。O(m+n)ここmで、は行n数と列数です。 入力は、次の形式のいずれかです。 2D配列: [ [0, 0, 0, 0], [1, 0, 0, 0], [1, 1, 0, 1], [1, 1, 1, 1] ] 文字列の配列: [ "0000", "1000", "1101", …

4
Golf Stringのformat()逆
Formatメソッドを反転します。 FormatStringクラスのメソッド(またはのような同等のメソッドsprintf)は、ほとんどの言語で使用できます。基本的には、いくつかの追加の書式設定を持つプレースホルダーと、それらのプレースホルダーの代わりに0個以上の値が挿入される「Format」文字列を取ります。 あなたの仕事は、選択した言語で逆関数を実装することです。 API メソッド名のいずれかでなければなりませんformat1かdeformat。 入力:1番目のパラメーターは、元のformatメソッドと同様に、「Format」文字列になります。2番目のパラメーターは、解析された文字列になります(以下の例を参照)。他のパラメーターは不要であり、許可されていません。 出力:形式のプレースホルダーに対応して抽出された値の配列(または選択した言語に相当するもの)。 プレースホルダーです{0}、{1}、{2}、など 不正な形式の場合、エラーをスローしたり、好きなものを返したりすることがあります。 無効な入力の場合、エラーをスローするか、好きなものを返します。無効な入力は、同じフォーマット文字列を使用してString.Formatで生成できないようなものです'{0}{0}', 'AAB'。例:。 例 deformat('{0} {1}', 'hello world') => ['hello', 'world'] deformat('http{0}://', 'https://') => ['s'] deformat('http{0}://', 'http://') => [''] // array of one item which is an empty string deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB'] あいまいさ あいまいな場合は、適切な回答を返すことができます。例えば: deformat('{0} {1}', 'Edsger W. Dijkstra') // …
13 code-golf  string 

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