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

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

15
数秘術計算機
この課題の目標は、文字と数字を含む文字列から1種類の数秘術の数字を計算することです。 入力は、任意の便利な方法(標準入力、引数、分離ファイル)を使用できます。 入力は任意の印刷可能なASCII文字が含まれているが、唯一の英数字(ことA-Z、a-zと0-9)考慮しなければなりません。 出力は、数字の間でなければなりません1し、9または星*がない場合は、文字と...見つかりませ桁(あるいは0入力は任意の数含まれている場合0 と、何もしますが、これは問題ではありません)。 文字の値は次のようにマッピングされます。 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 q r s t u v w x y z 数秘術の数字は、一つだけ桁が存在するまで、繰り返し、文字列の各値を加算することによって計算されます。サンプルのため13579、Hello, world!、00 0 00、!@#$%^&*();、と3.141592: 13579 => 1 + 3 …
19 code-golf 

18
入力文字列からn個以上の連続した母音を削除する
母音が3つ以上連続する文字列は好きではありません。言葉から不要な母音をすべて削除するプログラムを作成できますか? プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 入力は、印刷可能なASCII文字(0x20から0x7Eまで)のみを含む文字列です。 出力は、最大3つの連続した母音の実行のみを含む文字列です。入力文字列に連続する3つ以上の母音が連続する場合、プログラムは、その連続した最初の3つの母音を含む出力文字列を生成し、それ以降の連続する母音を破棄します。 Yは、この課題のための母音ではありません。 これはコードゴルフであるため、最短のコード(バイト単位)が優先されます。 テストケース "Aeiou" => "Aei" "screeeen" => "screeen" "We're queueing up for the Hawaiian movie." => "We're queung up for the Hawaiin movie." "Spaces break runs: aei iou." => "Spaces break runs: aei iou."
19 code-golf  string 

21
XORテーブルを作成する
前書き XORは、排他的論理和を実装するデジタルロジックゲートです。ほとんどの場合、これはと表示され^ます。バイナリの4つの可能な結果: 0 ^ 0 = 0 0 ^ 1 = 1 1 ^ 0 = 1 1 ^ 1 = 0 これは、2を法とする2進法の加算とも見なすことができます。小数では、我々はバイナリに小数を変換する必要がある35 = 100011と25 = 11001.TO XOR値を計算し、私たちは互いの上にそれらを配置します。 100011 11001 ^ -------- 111010 = 58 in decimal タスク:1より大きい整数値Nを指定すると、サイズN + 1のXORテーブルを出力します。たとえば、N = 5: 0 1 2 3 4 5 1 0 …

19
リバースとスクエア
このチャレンジでは、奇妙なシーケンスから数値を計算します。 入力は、単一の10進数の非負整数です。この整数のビットを逆にしてから、数値を2乗して必要な出力を取得します。 ビットを反転する場合、入力に先行ゼロを使用しないでください。例えば: 26 (base 10) = 11010 (base 2) -> 01011 (base 2) = 11 -> 11*11 = 121 このシーケンスの最初の25の入力/出力: 0: 0 1: 1 2: 1 3: 9 4: 1 5: 25 6: 9 7: 49 8: 1 9: 81 10: 25 11: 169 12: 9 13: 121 14: …

6
逆ブストロフェドンテキスト
Boustrophedonは双方向テキストの一種で、連続する行が左から右と右から左に交互に表示されます。文字の方向も読み取り方向に関してミラーリングされました。逆ブーストロフェドン書記体系では、文字は鏡像ではなく180度回転していました。 チャレンジ テキストの文字列と複数の列を受け入れ、指定された列数にフォーマットされた文字列を出力します。 入力 プログラムは2つの引数を受け入れる必要があります。 S、フォーマットするテキストの文字列 N、列の数 出力 プログラムは、180度反転した行が交互に並んだN列でラップされたSを出力する必要があります。 最初の行の読み取り方向は常に左から右です。 改行を配置する場所については心配しないでください。行は任意の文字で分割でき、単語のハイペネーションは必要ありません。 入力文字列には改行が含まれないと想定することができます。 以下は、プログラムが反転した対応物でサポートする必要のある文字です。 Uppercase: ABCDEFGHIJKLMNOPQRSTUVWXYZ ∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z Lowercase: abcdefghijklmnopqrstuvwxyz ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz Punctuation: &_?!"'., ⅋‾¿¡„,˙' テストケース S: The quick brown fox jumps over the lazy dog. N: 30 Output: The quick brown fox jumps over ˙ƃop ʎzɐl ǝɥʇ S: Lorem ipsum dolor sit …

2
Koopaシェルシーケンス
さまざまなスーパーマリオゲームで、緑と赤の Koopa Troopaシェルは、平らな表面で摩擦なくスライドし、途中にあるレンガブロックを破壊できます。シェルがレンガブロックに当たると、ブロックが壊れて空のスペースに変わり、Koopaシェルは方向を反転します。例として、こちらの赤いシェルをご覧ください。 スーパーマリオのレベルが1ブロックだけで、すべてのグリッドセルがレンガまたは空のスペースであると仮定します。ただし、右に移動するシェルを含む一番左のセルを除きます。レベルも周期的であるため、シェルがレベルの右端または左端を出ると、反対側から再び入ります。この状況では、シェルはレベル内のすべてのブリックブロックから跳ね返り、それがなくなるまで継続します。最後のレンガブロックが壊れた直後に、シェルはどこまで移動しましたか? チャレンジ 負でない10進整数を取り込むプログラムまたは関数を作成します。この数値は、先行ゼロなしでバイナリで表現され(唯一の例外は0自体です)、1ブロックの高レベルレイアウトをエンコードします。A 1はレンガブロックで、a 0は空のスペースです。 Koopa Shellはレベルの左端に挿入され、最初は右に移動しています。たとえば、入力に関連付けられているレベル39は >100111 なぜなら100111バイナリで39であり、>そして<右表し、それぞれのシェルを動かす左。 最後のブロック(別名1)が壊れたら、シェルが移動した合計距離を印刷するか返す必要があります。 39is の出力と7レベルの変更は次のようになります。 Level Cumulative Distance >100111 0 <000111 0 >000110 0 0>00110 1 00>0110 2 000>110 3 000<010 3 00<0010 4 0<00010 5 <000010 6 000001< 7 000000> 7 <-- output 同様に、の出力6は1次のとおりです。 Level Cumulative Distance >110 0 …

30
不適切な分数に対する混合数
不適切な分数に対する混合数 この課題では、混合数値を不適切な分数に変換します。 不適切な分数はより少ない数を使用するため、コードはできるだけ短くする必要があります。 例 4 1/2 9/2 12 2/4 50/4 0 0/2 0/2 11 23/44 507/44 仕様 入力の分母が0になることはないと想定できます。入力は常にx y/z、x、y、zが任意の非負整数である形式になります。出力を単純化する必要はありません。 これはコードゴルフなので、バイト単位の最短コードが優先されます。

2
デームス、数学をしてください!
操作の順序であるPEMDASは、数学の基本的なルールであり、どの順序の操作を実行する必要があるかを示します。 「括弧、指数、乗算と除算、加算と減算」 問題は、PEMDASはあまり汎用性がないということです!別の順序で実行したい場合はどうしますか?括弧をいじらないので、括弧のある場所(最初)に保持します。 2つの引数を取るプログラムを作成します。 操作が続く順序を示す文字列。いくつかの例は"DAMES"、"SAD, ME"、"ME SAD"、"MEADS"。はい、順序を覚えやすくするため、スペースとカンマは問題ありません。 チャットでの次の提案:スペースとカンマのサポートはオプションになりました。 いずれかの文字が欠落している場合、またはそこにあるべきではない追加の文字がある場合、入力を無効とみなし、好きなように扱うことができます。 評価する必要のある文字列、または式を含む式。 式の結果を10進数または整数として返します。答えが整数でない場合は、10進数として返される必要があります。 ルール: ご使用の言語で簡単な場合は、2つの入力引数を1つに結合してもかまいません。 文字列である必要はありませんが、文字が必要です。Additionを1、Divisionを2などに置き換えることはできません。 最初の入力を選択できます。 式は右から左に評価されます左から右にれます。(ルールの変更。これとは逆の最初の12時間の投稿ポスターは受け入れられます)。 操作では次の記号を使用します( ) ^ * / + -。たとえば、追加の¤代わりに使用することはできません+。 入力式のスペースは入力として無効です 単項+/-は、+または-の直後に続く場合、入力として無効です。3+-2無効な入力と見なしてください。好きなように扱うことができます(エラーを生成する必要はありません)。場合+または-プラスまたはマイナス以外の演算子を次の、それはいつものように扱われます:3*-3 = -9、sin(-2)=-0.909 プログラムは厳密に文字に従う必要が"EMDAS", 1-3+4 => -6あり"EMDSA", 1-3+4 => 2ます。 例: Input: "EMDAS", "3+6*2/4-1" // -> 3+12/4-1 -> 3+3-1 -> 6-1 -> 5 Output: 5 Input: …

11
ベクトルの有界累積和を計算する
ベクトルの累積合計は、以前のすべての要素の合計を取得するだけで計算されます。例えば: vec = [1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1] cum_vec = [1 2 3 2 1 0 -1 -2 -1 0 1 2 1] ここで、上限と下限を課します。つまり、上限に達した場合は累積合計の増加を停止し、下限に達した場合は累積合計の減少を停止します。簡単な例: upper_lim = 2 lower_lim = -1 vec = [1 1 1 -1 -1 -1 -1 -1 1 1 …

12
私は来ることを見ました
1より大きい整数または-1より小さい整数を取り込むプログラムまたは関数を作成します。つまり、入力は0、1、または-1にはなりません。 入力がの2場合、出力は次のようになります。 |\_/| |___| 入力がの3場合、出力は次のようになります。 |\_/\_/| |______| 入力がの4場合、出力は次のようになります。 |\_/\_/\_/| |_________| パターンは、より大きな入力に対しても同じ方法で継続します。たとえば、入力がの10場合、出力は次のようになります。 |\_/\_/\_/\_/\_/\_/\_/\_/\_/| |___________________________| 入力がの-2場合、出力は次のようになります。 ____ | | |_/\_| 入力がの-3場合、出力は次のようになります。 _______ | | |_/\_/\_| 入力がの-4場合、出力は次のようになります。 __________ | | |_/\_/\_/\_| パターンは、より小さい入力に対してもまったく同じ方法で続きます。たとえば、入力がの-10場合、出力は次のようになります。 ____________________________ | | |_/\_/\_/\_/\_/\_/\_/\_/\_/\_| 出力は、オプションの末尾の改行を含む文字列として印刷または返すことができます。負の入力の出力の右上の「空の」コーナーはスペースであるか、空のままである場合があります。 バイト単位の最短コードが優先されます。

1
最急降下を避けてください!
バックグラウンド 数ヶ月前、あなたの人生の冒険はちょうど始まりました。さて、この正確な瞬間に(ええ、今)、数ヶ月の苦労と努力の後、あなたと友人のグループは世界の頂点に立っています。はい、あなたは正しいです、あなたはサガルマータの頂上にいます。 しかし、物事はあなたが望んでいるほどうまくいきません。濃い霧があなたを取り囲み、信じられないほど見栄えの悪い嵐ができるだけ早く来ています。途中でロープを固定せず、足跡が雪に覆われました。(少なくとも今日は)生き残りたい場合は、できるだけ早くそこから抜け出す必要がありますが、まず、山のどの面が下りるべきかを知る方法を見つけなければなりません。 幸いなことに、旅行前に変更した衛星電話を持ち込んで、プログラムを実行できるようにしました。 チャレンジ ASCIIの昔ながらの判読できない世界の頂点で山の地図を携帯電話にダウンロードすることができました。あなたの仕事は、あなたが生き残る可能性を高めることができるように、山のどの面が最も簡単な降下を示すかを決定することです。そうするためには、どれが最も簡単な方法であるかを伝えるプログラムを携帯電話でコーディングするという素晴らしいアイデアを持っています。(免責事項:これらの活動は専門家によって行われています。このナレーション中にプログラマは負傷していません。自宅でこれを試さないでください。) マップは文字のみで構成されている/と\(プラススペースや改行)。どのマップでも、山の頂上は常に /\ \/ そして、山頂の両側(1,2,3または4)からは、常に山を下る「可能な」方法を見つけるでしょう。 1 /\ 2 3 \/ 4 ルートは常に次の方法で表示されます。 \ Steep-> / / / / <-Flat / \ Flat-> \ \ / \ <-Steep /\ \/ ここで、各新しいキャラクターは、その前身の左/右のいずれかの場所です。各文字の意味は次のとおりです。 スラッシュ/バックラッシュが山頂側に平行な場合->「急な」部分としてカウントされます。 スラッシュ/バックスラッシュが頂上に垂直の場合->「フラット」パーツとしてカウントされます。 *詳細については、上の図を参照してください。 注:側面の長さは異なる場合があり、頂上を構成する文字も側面の一部としてカウントされます。引き分けの場合は、それらのいずれかを選択できます。 標準の抜け穴は許可されていません。 入力 山の地図を表す文字列または同じ情報を含むプレーンテキストファイル。 どちらか C:\....\file.txt または \ / / / / …
19 code-golf 

8
CUDDLE計算
番号69のWikipediaページによると、69 2 = 4,761と69 3 = 328,509が一緒にすべての10進数を使用することに注意してください。数字の69は、実際にこのプロパティを満たす最小の数字です。 同様の理由で、32043は顕著である:32043 2 = 1026753849は、すべての桁を使用しています。 このように興味深い数字について話し続ける場合、表記が必要になります。 ほとんどの整数nの累乗n 2、…、n kは、十分に大きいkの値に対して10回すべての10進数字(先行ゼロはカウントしない)を少なくとも1回使用します。それが存在する場合、我々は最低な呼びますK 抱きしめる(累積小数点桁数、最小指数の)nで。 仕事 単一の非負整数nを入力として受け入れ、そのCUDDLEを計算して返すプログラムまたは関数を作成します。 nにCUDDLEがない場合、コードが最終的に停止する限り、エラーまたは空の文字列を含む正の整数以外のものを返すことができます。 テストケース 左の列は入力、右の列は出力です。 0 1 2 15 3 10 4 10 5 11 6 12 7 7 8 5 9 6 10 11 7 12 6 13 6 14 7 15 9 …
19 code-golf  math 

10
コイン投げ時間旅行者
将来的にはタイムトラベル(TT)が一般的になりますが、コイン投げは深刻な精神スポーツになります。将来に備えて、エントリーの観点から実際に時間旅行が行われるプログラムのコンテストを作成します。 競争は、Javaクラス間のコイン投げ試合で構成されるラウンドロビンスタイルのキングオブザヒルです。 コイン投げのルール 2人のプレイヤーと100ラウンドがあります。 ラウンドごとにコインが投げられ、その結果に基づいてプレイヤーの1人が1ポイントを獲得します。各プレイヤーは50%の確率でポイントを獲得できます。 投げた後、両方のプレイヤーはレバーを引いて時間を制御する機会があります。 青色のレバー(ストッパーを元に戻す)を引くと、レバーが使用されたラウンドまたはそれ以前のラウンドではTTを使用できません。TTがこれらのラウンドに行こうとしても効果はありません。 赤いレバー(リバーター)を引くと、時間を元のラウンドに戻そうとします。成功した場合、対戦相手の記憶は、選択されたラウンドの前に記憶に戻され、選択されたラウンドから始まるコイントスの結果も削除されます。TTに関して対戦相手に可能な唯一の兆候は、元に戻されない未使用のレバーの数です。 各プレイヤーには、試合開始時に5個の青と20個の赤の未使用レバーがあります。これらのレバーはTTの影響を受けません。 100ラウンドの終了時にTTが発生しない場合、ゲームは終了し、スコアの高いプレイヤーが勝ちます。 詳細 ラウンドには1から始まるインデックスがあります(フォーム1から100)。 ラウンドの前にx、利用可能な青と赤のレバーの数が提供され、コインが投げられるまでx(最後を含む)、最後のx-1ラウンドのメモリがトスされます。 ラウンドで青色のレバーを引くと、xラウンドx前またはラウンド前に目的地があるTTが停止します(同じ正確なラウンドでもTTがブロックされる)。 ラウンドに戻すxことは、次のラウンドがラウンドになることを意味しxます。 両方のプレイヤーがラウンドの終わりに復帰することを選択した場合、時間はブロックされていない以前の目的地に戻ります。この時間に戻ろうとしたプレーヤーは記憶を保持します。 技術的な詳細 提供されたBotインターフェイスを実装するJavaクラスを作成する必要があります。 ボットをプロジェクトに追加します。 Botファイルのにボットのインスタンスを追加しますController.java。 クラスは、呼び出し間で情報を保持するべきではありません。(ほとんどの場合final、関数の外部に変数のみがあると、この要件が満たされます。) memory返されたActionオブジェクトのフィールドでコントローラーに情報を提供できます。TTが発生しなかった場合、これは次のターンに返されます。TTが発生した場合、対応する以前のメモリを受け取ります。 クラスのtotalScore()メソッドを使用してGame、履歴文字列のスコアを取得できます。 プロトコル 毎回、takeTurn(...)メソッドは5つの引数で呼び出されます。 未使用の青いレバーの数 未使用の赤いレバーの数 コイン投げの履歴、1と0で構成される文字列は、前のラウンドでの勝敗を示します。最初のキャラクターは、最初のコイン投げに対応しています。(最初のラウンドでは、文字列の長さはになります1。) 文字列、前のラウンドで保存されたメモリ このラウンドの1から始まるインデックス 毎回、メソッドは以下Actionを含むオブジェクトを返します moveアクションを説明するフィールドの整数: 0 何もしない -1 青いレバーを引いて、TTがこのラウンドを通過するのをブロックします x赤いレバーを引いてラウンドに戻ろうとする現在のラウンドよりも大きくない正の整数x 無効な整数はとして扱われ0ます。 保存したいこのラウンドのメモリを含む文字列。メモリの保存は、チャレンジの重要な部分ではないことに注意してください。文字列に有用なデータを保存せずに、適切なエントリを作成できます。最初のラウンドでは、文字列は空の文字列になります。 あなたの方法は、試合の平均でラウンドごとに10ミリ秒以上かかることはありません。 定期的に時間制限に違反すると、失格となります。 得点 試合に勝つと2ポイントが得られ、引き分けは両方のプレイヤーに対して1ポイントを獲得します。損失は​​ポイントを獲得しません。 ボットのスコアは、収集したポイントの総数になります。 競技者の各ペア間でプレイされる試合の数は、エントリーの数とスピードに依存します。 2つの簡単なボットの例が回答として投稿されています。 コントローラーと最初のカップルのボットはこちらから入手できます。 11月3日までに送信されたボットのテスト結果: 合計スコア: Oldschool: …

2
ドーナツショップ™
現金が不足しているため、世界最大のデジタルドーナツ企業であるThe Donut Shop™にドーナツを構築するためにサインアップしました。 現在、取引基準が非常に厳しいことを考えると、これらのドーナツを作成するために可能な限り短いコードを作成して、それらを作成したソースコードがパケットの外側に配置できるようにする必要があります。 チャレンジ 4つの入力、外側のリングの半径、内側のリングの半径、可能なスプリンクル、およびセルにスプリンクルが発生する可能性がある場合、正しい内側および外側の半径を持つスプリンクルで覆われたドーナツを出力します。 入力は、希望する方法(関数の引数、標準入力、プログラム引数)および任意の順序で取得できます。 スプリンクルは、スプリンクルタイプごとに1文字の形で与えられます ^+*-スプリンクル入力は、4つのスプリンクルのリストであるように^、+、*、- 振りかける可能性は、0〜1の浮動小数点値として入力されます。例:0.1、0.23 出力をstdoutまたは同等のものに出力する必要があります。 ドーナツの端に振りかけることはできません。 スプリンクルの各タイプは、各セルに等しく存在する可能性がなければなりません。 半径は1セル単位で与えられます。 内側の半径が0または外側の半径のいずれかに等しい場合、ドーナツにはリングがないと言われます。 両方の半径は負でない整数になります。 ドーナツの内側と外側のエッジは、ハッシュ(#)を使用して表す必要があります 半径と円の中心を指定して、点が円内にあるかどうかを確認するテストは次のとおりです。 (x-center)**2+(y-center)**2 < radius**2 出力付きの入力例 (外半径、内半径、振りかける、振りかける可能性) 10、4、「^ + *-」、0.1 ######### # # ## ++ * *## # # # ^^ - * # # ##### ^ # #+ # # # # # …

14
別の「Hello World」プログラムを作成する「Hello world」
hello world文字列(「Hello world」、「Hello、World」など)およびソースコードを出力するプログラムを作成します。出力はstdoutまたは同等のものに書き込まれます。Hello World文字列はソースコードに埋め込まれています。 たとえば、の出力は (some source code here)hello world(some source code here) 出力が再度コンパイルまたは解釈されると、同様の出力が作成されますが、hello world文字列には異なる句読点または大文字を使用する必要があります。たとえば、前の例では次の出力を作成できます (some source code here)hello, wORld(some source code here) これらの例の各「(ここのソースコード)」は、実行のたびに変更される場合もあれば、同じ場合もあります。 出力には、有効なhello world文字列を1回だけ含める必要があります。無効なhello world文字列をいくつでも含めることができます。ソースコードには任意の量のコメントを含めることができ、hello world文字列をコメントに埋め込むことができます。最初のプログラムには、ゼロまたは1つの有効なHello World文字列を含めることができますが、それ以上はできません。 次の句読点が有効です。 hello, world hello world helloworld すべての大文字を使用できます。たとえば、これらは有効なhello world文字列です。 Hello, world hellO WORld HELLoworlD これらの文字列は無効です。 Hello world Hello(newline)world Hello,world Hello, Steve 次の条件のいずれかが満たされると、プログラムはすぐに失敗します。 …

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