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

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

14
合成番号シーケンス
合成番号シーケンス この質問に触発された 正の整数nを指定すると、コードは最初のn個の合成数を出力する必要があります。 入出力 プログラムまたは関数を作成できます。入力はSTDINまたは関数の引数を介して行われ、出力はSTDOUTまたは関数の戻り値を介して行われます。 出力は、リスト、配列、または文字列です。 例 0 -> 1 -> 4 2 -> 4, 6 3 -> 4, 6, 8 13 -> 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22 ルール いつものように、標準的な抜け穴は許可されていません。 素数または合成数を生成するビルトインは許可されていません。 素数または合成数に関連するビルトインは許可されていません。

8
Barcodegolf:数値のUPCを生成する
最近では、ほぼすべての店舗でUniversal Product Code(UPC)バーコードを使用して、チェックアウトプロセスを簡素化しています。名前があなたにとって何の意味も持たない場合、あなたは彼らがどのように見えるかを確実に認識するでしょう: フォーマット 最も一般的なシステムはUPC-Aで、12桁を使用して特定の製品を表します。各桁は一連の黒と白のストライプにエンコードされ、マシンが7ビット長のコードを読み取れるようにします。バーコードの開始、中間、終了を示す合計11ビットのパターンがあります。これにより、バーコードの合計長は12×7 + 11 = 95ビットになります。(これから、各ビットの色を参照するためにバイナリが使用される場合、0白と1黒になります。) 開始と終了の両方のパターンがあり101ます。次に、数字は6つの2つのグループに分割され、以下に示すようにエンコードされます01010。左右のグループの間にパターンがあります。次の表に、各番号のパターンを示します。パターンは、数字が右側にあるか左側にあるかによって異なります(これにより、バーコードを上下逆さまにスキャンできます)。ただし、右のパターンは左のパターンの反対です(白を黒に、逆に白をスワップ)。 上の画像が表示されない場合、これは各数値のバイナリに相当します。 # Left Right 0 0001101 1110010 1 0011001 1100110 2 0010011 1101100 3 0111101 1000010 4 0100011 1011100 5 0110001 1001110 6 0101111 1010000 7 0111011 1000100 8 0110111 1001000 9 0001011 1110100 例 UPCを持っているとしましょう022000 125033。(これらは乱数ではありません。それらの重要性を理解したら、コメントを残してください。)すべてのバーコードで同じこの定型文から始めます。 101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx01010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx101 数字については、各数字を、それが存在する側(左または右)に対応するエンコードに置き換えます。まだ混乱している場合は、下の画像を参照してください。 以下は、|パーツを分離するパイプを使用したバイナリ出力です。 …

2
不可解なキッカー//
不可解なキッカー テキストを暗号化する一般的だが安全ではない方法は、アルファベットの文字を入れ替えることです。言い換えると、アルファベットの各文字は、テキスト内で一貫して他の文字に置き換えられます。暗号化が可逆的であることを保証するために、2つの文字が同じ文字に置き換えられることはありません。あなたの仕事は、各行が異なる置換のセットを使用し、解読されたテキストのすべての単語が既知の単語の辞書からであると仮定して、テキストのいくつかのエンコードされた行を解読することです。 入力 入力は、アルファベット順の小文字の単語で構成されます。これらの単語は、復号化されたテキストに表示される単語の辞書を構成します。辞書に続いて、入力のいくつかの行があります。各行は上記のように暗号化されます。 辞書にあるのは1,000語以下です。16文字を超える単語はありません。暗号化された行には小文字とスペースのみが含まれ、長さは80文字を超えません。 出力 各行を復号化し、標準出力に出力します。複数の解決策がある場合は、いずれでも解決できます。解決策がない場合は、アルファベットのすべての文字をアスタリスクに置き換えます。 サンプル入力 and dick jane puff spot yertle bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn xxxx yyy zzzz www yyyy aaa bbbb ccc dddddd サンプル出力 dick and jane and puff and spot and yertle **** *** **** *** **** *** **** *** …

2
ペアコンデンサ
コンデンサは高い公差で製造されていることで有名です。これは多くの場合許容されますが、許容範囲の厳しいキャパシティが必要になる場合があります。必要な正確な値で容量を取得する一般的な戦略は、慎重に測定した2つのコンデンサを並列に使用して、容量が必要な範囲内になるようにすることです。 この課題の目標は、(複数の)容量のセットが与えられ、各ペアの合計容量が所定の範囲内になるようにコンデンサをペアにすることです。また、最適なペアリングのセット、つまり、できるだけ多くのペアが見つかるようなペアリングのセットを見つける必要があります。 制約 入力は選択した形式で構成されます 持っているコンデンサの(複数の)セットを表す容量の順序なしリスト ターゲット範囲の下限と上限を表す容量のペア(包括的) 入力のすべての容量は2 30より小さい正の整数であり、単位はpFです(それは重要ではありません)。 入力の容量のリストに加えて、所有するコンデンサのセットには、値が0 pFのコンデンサが無限に含まれています。 出力は、各ペアの合計が指定されたターゲット範囲内になるように、容量のペアのリストを選択の形式で構成します。ペアの順序もペア内の容量の順序も指定されていません。 出力の容量は、お持ちのコンデンサのセットよりも頻繁に表示されることはありません。つまり、出力するペアは重複してはなりません。 プログラムが生成する出力よりも多くの容量のペアを含む、条件4および5を満たす出力はありません。 プログラムはO(n!)時間で終了します。nは、所有するコンデンサのセットを表すリストの長さです 抜け穴は悪用されない 目標範囲は空であってはなりません 得点 スコアは、オクテット単位のソリューションの長さです。ソリューションがこの問題を多項式時間O(のn のkいくつかのために)のk、これは実際に可能であるならば、私は知らない10であなたのスコアを分割します。 サンプル入力 範囲100〜100、入力配列 100 100 100、有効な出力: 0 100 0 100 0 100 範囲100〜120、入力配列20 80 100、有効な出力: 0 100 20 80 出力20 100は無効です 範囲90〜100、入力配列50 20 40 90 80 30 60 70 40、有効な出力: 0 90 …

2
戦利品の折り目
前書き 長い戦いの後、謎のコンテストでスフィンクスを倒すことに成功しました。あなたのスキルに感銘を受けたスフィンクスは、あなたにあなたの賢さに見合った報酬を与えたいと望み、それぞれ数字を含む8つの箱に分割された魔法の羊皮紙のストリップを存在に想起させます。 「羊皮紙を減らしてください」とスフィンクスは言います、「箱が重なり、それらの箱が足し算または掛け算のいずれかによって融合するように。1つの箱が残っているとき、その価値は金貨であなたの報酬になります。」 仕事 8つの自然数のリスト/配列/いずれかを入力として受け取り、一連の「折り目」操作を通じて取得可能な最大の報酬を返す/印刷するプログラムまたは関数を作成する必要があります。 力学 「折り目」操作は、いくつかのセルに対して、+または*演算子として、または演算子として実行されます。リストの最初のn個のセルは折り返され、演算子を使用して宛先セルとマージされます。マージ操作で消費されないセルは変更されません。 n = 3セルを使用して折り目を付ける例を次に示します。 いずれかの追加を使用すると、次の結果になります。 または乗算。これは次のようになります。 注:簡単にするために、リストの長さ以上のセル数で折り目を付けるのと同様に、1セル未満の折り目は許可されません。ただし、リストは、そのセル数の半分以上増加する可能性があります。 8セルのリストは、5ずつ折りたたむことができ、長さ5の新しいリストに なります。演算子を[0,1,2,3,4,5,6,7]使用して5セルずつ折りたたむと、+[9,9,9,1,0] 得点 標準コードゴルフルール-正しい出力を生成し、バイト数が最も少ないコードが勝ちます。 ボーナス:コードが最大の報酬につながる折り目操作のシーケンスも返す/印刷する場合は、スコアに0.8を掛けます。出力例は次のようになります。 crease 5 + crease 2 * crease 2 + crease 1 * 例 次の形式で、これらの入力と結果を使用してコードをテストしますinput - maximum reward。 [0, 1, 2, 3, 4, 5, 6, 7] - 7560 [0, 9, 0, 3, 2, …

1
有効な迷路の数
与えられたWxHグリッドを、どのように多くの可能な迷路がありますか? 迷路について知っていること: グリッドのH高さは正確に正方形で、W幅は正方形です。 開始、終了、空の3つのタイプの正方形があります。迷路には、開始と終了がそれぞれ1つだけ含まれている必要があり、残りのすべての正方形は空です。 迷路全体を囲む壁があります。 以下の規則に違反しない限り、壁は任意の2つの正方形の間のエッジに存在できます。 開始広場から終了広場までのパスが存在する必要があります。 したがって、との2つの数値を指定するWとH、可能な正方形/壁構成の数を表す単一の数値を返す必要があります。あなたは保証されていますW*H > 1 たとえば、2x2迷路の100構成はまったく異なります。 これはコードゴルフなので、最短の答えが勝ちです!

5
テンキーの周りの確率を生成する
今日のこの質問に触発されて、さまざまなプログラミング言語がテンキーを確率に変える興味深い方法を見たいと思います。一般的に、タイルベースのゲームでは、テンキーを使用して、キャラクターが現在いる場所に基づいて任意の方向に移動できます。これらのゲームのAIを作成するときMath.random() * 8は十分ではないので、動きを少し自然に見えるようにするために少し創造的である必要がありました。 テンキーは次のように定義されます: 7 | 8 | 9 - - - - - 4 | x | 6 - - - - - 1 | 2 | 3 5は無効な数字であることに注意してください。自分自身に進むことはできません。 すべての例でこれらの確率を使用します。 [50, 40, 30, 20, 10] 周りの確率を生成したい場合は8、次のようになります。 40 | 50 | 40 -- | -- | -- 30 | xx …
12 code-golf 

30
その言葉にサインしてください!
ワードシグネチャとは何ですか? 単語の署名は、それのすべての文字を順番に入れている-署名のthis、histそしてhitsすべてですhist。 チャレンジ プログラムを書くプログラムは入力を要求し、その単語の署名を印刷する必要があります。したがって、プログラムの実行例は次のようになります。 Give me a string: this The signature signature of 'this' is hist. 入力を受け取って署名を印刷する限り、必要な相互作用はありません。 得点 最小バイト数のプログラムが勝ちます! リーダーボード これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes コードスニペットを表示 var QUESTION_ID=54945;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var …

1
シングルスーテッドマージャンのハンドバリューを確認する
麻雀は、アジアで非常に人気のあるタイルゲームです。通常、4人のプレイヤーでプレイされ、ゲームの目標は、タイルを使用して有効なハンドを完了する最初の人になることです。麻雀には3つのタイルスーツと名誉タイルがあります。この課題では、単一のスーツのタイルを使用して形成された手のみを検討します。 タイルから番号が付けられている1と9、各タイルの4つのコピーが正確にあります。有効なハンドは、3セットと4組の合計4つのタイルで構成されます。 3つのセットは次のいずれかです。 トリプレット、同じタイルの3つ(例444)、または 三つの連続タイル(例えば、一連の123か678ではなく357)。シーケンスはラップしません(912無効です)。 ペアは、単純に2つの同一のタイルです(例:)55。 チャレンジ 14タイルの有効なハンドが与えられたら、次の基準に基づいてスコアを決定します。 Condition Description Point/s ------------------------------------------------------------------------------- Straight Contains the sequences 123 456 789 1 Identical sequences Contains two identical sequences 1 All simples Only 2-8, no 1s or 9s 1 All sequences All sets of three are sequences 1 All triplets All sets of …
12 code-golf  game 

3
同形部分文字列があるかどうかを確認します
この質問は、単語が同形かどうかをチェックする拡張機能で あり、その最初の部分をコピーして同形の定義を提供します。 2つの単語が同じ文字の繰り返しパターンを持っている場合、2つの単語は同形です。たとえば、両方ESTATEとDUELEDパターンを持っていますabcdca ESTATE DUELED abcdca 文字1と6は同じであるため、文字3と5は同じであり、それ以上は何もありません。これは、単語が置換暗号によって関連付けられていることも意味しますE <-> D, S <-> U, T <-> E, A <-> L。ここでは一致しています。 XがY以下の2つの文字列XとYが与えられた場合、タスクは、Xと同形であるYの部分文字列があるかどうかを判断することです。 入力: a..zA..Zからの2行の空でない文字列。1行に1文字列。これは標準入力から取得されます。 出力このようなものが存在する場合、最初の文字列と同形である2番目の文字列の部分文字列。それ以外の場合は、「No!」を出力します。 ルールコードは、入力の全長で線形時間で実行する必要があります。 スコアスコアは、コードのバイト数です。少ないバイトが勝ちます。 入出力の例 adca ddaddabdaabbcc dabd ヒント 少なくとも一つのない存在であることを、この問題に複雑、実質的に速く、線形時間ソリューション。
12 code-golf 

2
最短のSwypeパスを見つける
前書き 最近、私はSwypeでの入力に慣れてきました。 開始文字から終了文字まで直線を描くか、繰り返される文字をスキップすることで、特定の単語を生成できることに気付きました。 たとえばballoon、次の文字をスワイピングして単語を入力できます。 b> a> l> o> n。 チャレンジ Shortest Swype Pathを定義しましょう、またはSSP、文字列の入力に必要な識別可能な線分セグメントの最小数として。線分は、2つ以上の文字の間の連続した直線です。方向を変更すると新しい線分セグメントが開始されますが、一部の単語は1本の直線のみを描くことでスイープされる場合があります。 次のシンプルなQWERTYキーボードレイアウトを使用します。 q w e r t y u i o p a s d f g h j k l z x c v b n m 上記の例では、次のシーケンスで詳述されているように、単語balloonにSSPof があり4ます。 1) Start at `b` (line segments = 0) …
12 code-golf 

7
イオン化合物ゴルフ
チャレンジ 正イオンと負イオンの2つの入力がある場合、2つのイオンから生成されるイオン化合物の式を出力する必要があります。これは基本的に、ゼロに等しくなるように料金を相殺することを意味します。 添え字番号を使用して数式をフォーマットする必要はありませんが、マルチ原子イオン用の括弧(などNO3)が必要です。 エラーを考慮する必要はありません(たとえば、誰かが2つのマイナスイオンを入力した場合、プログラムを失敗させることができます)。 注: Feを3+のチャージにする イオン 説明する必要があるすべてのイオンは、AQA GCSE化学データシートの 2番目の部分に電荷とともに記載されています。 陽イオン H + Na + Ag + K + 李+ NH 4 + Ba 2+ Ca 2+ Cu 2+ Mg 2+ Zn 2+ Pb 2+ Fe 3+ Al 3+ マイナスイオン Cl - Br - F - 私- OH - NO …

5
アスキーアートオブザデイ#4-ゾディアックサイン
私たちはすべての愛の星占いは、我々はそうではありませんか?しかし、スマートフォンにインストールされたこの星占いアプリには、毎日の星占いの星座のアイコンしか表示されないという深刻な問題があります。今、私は自分のホロスコープを覚えていますが、私が興味を持っている他の人のホロスコープを思い出すのは難しいです。 チャレンジ ASCIIアートオブザデイシリーズにさらに追加するための挑戦です。日付と月の入力が与えられたら、以下に示すようにASCII形式で対応する星座を出力します。各星座はDD MM、星座の名前と日付範囲(形式)の後に続きます。 Aries - 21 03 - 20 04 .-. .-. (_ \ / _) | | Taurus - 21 04 - 20 05 . . '.___.' .' '. : : : : '.___.' Gemini - 21 05 - 20 06 ._____. | | | | _|_|_ ' …

6
ASCIIトライアングルリップル
OK、私の最初のゴルフの質問。優しくしてください:)アスキーパズルが多すぎることはわかっています:Pしかし、ここに行きます。 タスクは簡単です。お気に入りのプログラミング言語を使用して、三角形の波紋を印刷します。入力はリップルのサイズにする必要があります。 各三角形は等間隔です。基本的に、最小の三角形に十分なスペースがなくなるまで三角形を追加し続けます。 リップルが正しいサイズの例と同じである限り、任意の場所に空白を入れることができます。 例 q)g 1 __ \/ q)g 2 ____ \ / \/ q)g 3 ______ \ / \ / \/ q)g 4 ________ \ __ / \ \/ / \ / \/ q)g 5 __________ \ ____ / \ \ / / \ \/ / \ / …

5
リスク、Warlight Way
前書き このゲームでは、プレイヤーは自分の軍隊を使用して他のプレイヤーの軍隊と戦い、領土を占領し、最後の男になります。各ターンで、プレイヤーは基本数の軍隊を受け取り、自由に使用できます。ただし、特定の地域の領土をキャプチャすることで、プレイヤーはこの数を増やして、ゲームの後半で潜在的な利点を与えることができます。(これは基本的にWarlightと同じです)。 すべてのボットは、Java、C、またはC ++で作成する必要があります(他の言語も含めますが、ソフトウェアや経験はありません)。サブミッションでクラスを拡張する必要はありません。関数、クラス、インターフェイスなど、必要なものを作成し、標準 APIのパッケージまたはクラスを使用できます。クラスまたはインターフェイスの作成を計画している場合は、内部クラスまたは内部インターフェイスの使用を検討してください。 このコンペティションのコントローラーまたは他の提出物をプログラムで変更しようとしないでください。 ゲームプレイ 概要 10x10の2次元配列は、各要素/セルが「領域」を表すボードをシミュレートします。20ラウンドがあり、ラウンドごとに最大1000ターンがあります。各ターンでは、プレイヤーはまず所有している地域のいずれかに軍隊を配備し、次に、自分の軍隊を攻撃して敵の領土を占領するために、近くの領土に軍隊を輸送する機会を与えられます。プレイヤーはすべてを展開する必要がありますの軍隊をますが、必要に応じて移動する必要はありません。 軍隊の攻撃/移送 プレイヤーが望むなら、彼/彼女は1つの領域から8つの隣接する領域のいずれかに軍隊を送ることができます。ボードは「ラップアラウンド」します。つまり、プレイヤーの領域が一方の側にある場合、そこからの軍隊は反対側の隣接する領域に移動できます。軍隊を領土から移動させる場合、その領土には少なくとも1つの軍隊が残っている必要があります。たとえば、テリトリーに5つの軍隊が含まれる場合、異なるテリトリーに移動できるのは4つまでです。領土に領土が含まれている場合、その軍隊は移動できません。 プレイヤーnが所有する領土から別の領土に軍隊を送った場合、その領土はn軍隊を受け取ります。 プレイヤーがn自分の領土からo軍隊を含む敵の領土に軍隊を送ったとしましょう。最も近い整数に丸められてo減少しn * .6ます。ただし、同時に、最も近い整数に丸められてn減少しo * .7ます。敵の領土が占領されているかどうかに関する次の規則が適用されます。 場合oに達するがゼロn0より大きい場合、プレイヤーが持っているであろう、領土を引き継ぎますnことに軍隊を。 両方の場合nとo、ゼロになりますo自動的に1に設定され、領土をキャプチャされません。 o0よりも大きい場合、プレイヤーの領土内の軍隊の数は増加しn、敵の領土は占領されません。 ボーナス ボーナスを表すために、テリトリーのグループが選択されます。1人のプレイヤーがグループの一部であるすべての領土を所有している場合、そのプレイヤーはターンごとに追加の軍隊を受け取ります。 ボーナスには、プレーヤーが受け取ることができる追加の軍隊を表すさまざまなIDと値を示すID番号があります。各ラウンドでは、ボーナスの値は5〜10の乱数で、フィールドには10のボーナスがあり、それぞれに10のテリトリーが含まれています。 たとえば、1ターンに5つの軍隊を受け取るプレーヤーが、値8のボーナスを構成するすべての領域を所有している場合、そのプレーヤーは次のターンと後続のターンに13の軍隊を受け取ります。ただし、プレイヤーがボーナスを構成する1つまたは複数の領域を失った場合、彼または彼女は1ターンあたりわずか5軍を受け取ります。 入出力 プログラムは、次の形式のコマンドライン引数を使用して入力を受け取る必要があります。 [id] [armies] [territories (yours and all adjacent ones)] [bonuses] ["X" (if first turn)] idそしてarmies両方とも整数です。idあなたのIDでありarmies、あなたの領土に展開する必要がある軍隊の数です。与えられたすべての軍隊を配備する必要があります-これ以上でもそれ以下でもありません。 territoriesは、所有している地域と、所有していない地域に隣接する、所有していない地域を表す一連の文字列です。文字列は次の形式です。 [row],[col],[bonus id],[player id],[armies] rowそしてcol領土がボードの行と列を示し、bonus idこの領域がその一部となっているボーナスのIDであり、player id領土を所有しているプレイヤーのID、およびarmies地域に含まれる軍隊の数です。これらはすべて数字です。 bonusesあなたが利用できるボード上のボーナスを表す一連の文字列です。文字列は次の形式です。 [id],[armies],[territories left] …
12 king-of-the-hill  c  c++  java 

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