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

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

8
0〜9と4つの操作のみで数値を表現する
説明 Befungeは、stacksを使用する2次元プログラムです。 つまり、5 + 6を行うには、と書く56+、という意味です。 56+ 5 push 5 into stack 6 push 6 into stack + pop the first two items in the stack and add them up, and push the result into stack (to those of you who do not know stacks, "push" just means add and "pop" …

10
何歩歩きましたか?
単純な歩数計は、反対のX = 0における側面オンおよびX = 1つの上の2つのスイッチと振り子によってモデル化することができるL。振り子がファースイッチに接触すると、歩行器は半分のステップを踏んだと見なすことができます。近くのスイッチに接触すると、手順は完了です。 振り子の位置を表す整数のリストが与えられたら、歩数計に記録された完全な歩数を決定します。 入力 整数l > 0、トラックの長さ。 各時間における歩数計の振り子の位置を表す整数のリスト。 出力 測定されたフルステップの数。振り子が遠くのスイッチ(x> = l)に接触し、次に近くのスイッチ(x <= 0)に接触するとステップが取られます。 テストケース 8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7] 1 振り子は、t = 0でx = 8ですぐにファースイッチと接触します。次に、t = 2とt = 4で近くのスイッチに触れて、1つのステップを完了します。その後、x = 9でt = 8に再びファースイッチに触れますが、ニアスイッチには再び触れません。 1, [1, 5, -1, -4, -1, 1, …

3
2D平面上の最長パス
任意の一意の2d整数デカルト座標のセットが提供されます。例:[(0,0)、(0,1)、(1,0)] この座標セットから可能な限り最長のパスを見つけます。ただし、座標を1回だけ「訪問」できるという制限があります。(そして、あなたが始めた座標に「戻る」ことはありません)。 重要: 座標またはその周囲を「通過」することはできません。たとえば、最後の音符の例(長方形)では、Cにアクセスせずに DからAに移動することはできません(これは再訪であり、見つかった長さを無効にします)。これは@FryAmTheEggmanによって指摘されました。 関数入力: 2次元デカルト座標の配列 関数出力:最大長のみ 勝者: 最短のコードが勝ち、ホールドが禁止されません(最も時空効率が悪い) 例 1:この例では、2回「訪問」された座標がない最長パスはA-> B-> O(またはOBA、またはBAO)であり、パスの長さはsqrt(2)+ 1 = 2.414です。 2:上記のこのケースでは、座標が2回「訪問」されていない最長パスはABOC(および明らかにCOBA、OCABなど)であり、示されている単位正方形の場合、sqrt(2)+ sqrt(2)+ 1 = 3.828。 注:これは、前の2つの例ほど簡単ではない追加のテストケースです。これは、6つの座標から形成される長方形です。 ここで、最長パスはA-> E-> C-> O-> D-> Bです。これは8.7147です。 (可能な最大の対角線が通過し、エッジが通過しなかった)

6
略語の一般化
単語のリストとその略語の入力が与えられた場合、略語を形成できるパターンを出力します。 の入力例を見てみましょう potato ptao puzzle pzze 例として(つまり、の略語potatoはptaoであり、の略語puzzleはであるpzze)。 取得するためにすべての可能な方法を検討ptaoからをpotato。可能な方法の1つは、最初、3番目、4番目、6番目の文字を取得すること 1346です。しかし、以来tとo言葉に複数回表示され、そこに生成するために、複数の他の可能な方法がありますptaoからはpotato:1546、1342、と1542。 同様に、音符pzzeから生成することができるpuzzleのいずれかと1336、 1346、1436、1446。これら2つの略語に共通する唯一のパターンは1346;です。したがって、それはこの入力の出力でなければなりません。複数の可能なパターンが可能な場合、それらのいずれか、一部、またはすべて(少なくとも1つ)を出力できます。 あなたはそれを仮定するかもしれません: 入力語と略語には小文字のみが含まれます。 入力に少なくとも1つの単語/略語のペアがあります。 すべての略語が、対応する単語から形成される可能性があります。 すべての略語を形成する少なくとも1つのパターンが常に存在します。 各単語の最大長は9文字です。 入力は、次のいずれかとして取得できます。 2次元配列/リスト/タプルの配列/など。 [[word, abbr], [word, abbr], ...] フラットな1次元配列/リスト [word, abbr, word, abbr, ...] 小文字ではない単一の文字で区切られた単一の文字列 "word abbr word abbr" ハッシュ/連想配列/など {word => abbr, word => abbr, ...} これらの入力オプションのいずれでも、単語/略号の順序を入れ替えることができます(投稿の入力形式を完全に説明してください)。 出力は、単一の数字、非数字で区切られた文字列、または配列/リスト/タプル/などとして指定できます。数字の。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 テストケース(複数のパターンが機能する場合、1つ以上の結果を出力するだけでよいことに注意してください): In Out -------------------------------------------------------- …
14 code-golf  string 

2
食料品店のマイクロ管理
あなたはヒップな新しい食料品店Half Foodsの従業員であり、感謝祭の クリスマスイースターの前日です。食料品を手に入れるために急いでいる顧客で店がいっぱいになるので、店は皆を適切な行に送るために交通マネージャーを必要とします。怠zyなので、これを自動化して、すべての七面鳥の ハムを食べる前にデリにぶつかることができます。ただし、携帯電話だけを持っているので、長いプログラムをコーディングするのは非常に苦痛です。そのため、忍者コードゴルフのスキルを打ち破る必要があります。 チャレンジ 食料品店を2次元のグリッドで視覚化します。分析するサンプルグリッドを次に示します。 e s s s Y # # #s # #s # #s # #s # #s # #s #s #s # #3 #1 #4 # x x x x グリッドはから始まりe、ストアの残りの部分への「アウトレット」を表します。世代ごとに、グリッド内のすべてのアウトレットは、s真下に買い物客()を生成します。買い物客はあなたに届くまで世代ごとに下降します(Y)。買い物客があなたと同じ列に到達したら、買い物客が最も少ない行の先頭に買い物客をテレポートする必要があります。買い物客は、で行に移動するとすぐに行に移動し、Y間に世代はありません。行は#sで表されます。sの後の列#は行です。買い物客は、(出口で表される行の最後まで行くx)、その後間の乱数に変わる1と5。世代ごとに、番号の付いた買い物客を減らす必要があります1-買い物客が到着すると0、彼らはチェックアウトを済ませ、店を出ます。 このようなグリッドの入力が与えられたら、次世代の食料品店を出力します(すべての買い物客を同時に下に移動し、買い物客をリダイレクトし、終わったら退場させます)。 サンプル 入力: e Y # # # # # # # # # …
14 code-golf  string  grid 

11
正の整数の厳密なパーティション
OEIS A000009は、整数の厳密なパーティションの数をカウントします。厳格なパーティション非負整数のはn(何の繰り返しが許されないので、および順序は重要ではありません)正の整数の集合であるとその合計をn。 例えば、図5は、3つの厳格なパーティションを持っています5、4,1と3,2。 10には10個のパーティションがあります。 10 9,1 8,2 7,3 6,4 7,2,1 6,3,1 5,4,1 5,3,2 4,3,2,1 チャレンジ n1000未満の非負の整数を指定すると、その厳密なパーティションの数が出力されます。 テストケース: 0 -> 1 42 -> 1426 OEISからの0〜55の厳密なパーティション番号のリストを次に示します。 [1,1,1,2,2,3,4,5,6,8,10,12,15,18,22,27,32,38,46,54,64,76,89,104,122,142,165,192,222,256,296,340,390,448,512,585,668,760,864,982,1113,1260,1426,1610,1816,2048,2304,2590,2910,3264,3658,4097,4582,5120,5718,6378] これはcode-golfであるため、バイト単位の最短の解決策が優先されます。

5
海岸線を見つける
あなたの仕事は、ASCIIマップで提供される島の地図の海岸線の長さを見つけることです。入力マップは#、土地を示す1つ以上の文字と、水を示すスペースで構成されます。海岸線は、内陸の湖や島を含む、陸と水の間の端と見なされます。 ソリューションは、ファイル、文字列、または文字列の配列を読み込み、画面または標準出力に単一の整数を出力する完全なプログラムでなければなりません。各入力行には、先頭または末尾のスペース、およびゼロ個以上のハッシュ文字を含めることができます。マップの境界は、スペース(水)と見なされます。 行の長さは異なる場合があります。 例: Input: ## ## Output: 8 Input: ### ### ##### # ## Output: 26 Input: ##### # # # # # # # ##### Output: 36 これはコードゴルフであるため、最小のバイトカウントが優先されます。

10
組み込みまたはライブラリなしで英語を数字に変換する
この課題は他の課題と似ていますが、制限を設け(下の太字のテキストを参照)、それをかなり異なったものにしたり(楽しい)ようにしたりします。 チャレンジ n超えない正の整数の英語名を入力として受け取り、整数として100返す任意のプログラミング言語でプログラムまたは関数を記述しますn。 標準の抜け穴は禁止されており、この機能を既に実行している組み込み関数、外部ツール、またはライブラリを使用することはできません。 バイト単位の最短ソースコードが優先されます。 テスト ここにすべてのinput->output場合: one -> 1 two -> 2 three -> 3 four -> 4 five -> 5 six -> 6 seven -> 7 eight -> 8 nine -> 9 ten -> 10 eleven -> 11 twelve -> 12 thirteen -> 13 fourteen -> 14 fifteen …

9
インデックス可能なクイン
この課題の目標は、ソースコードのn番目の文字を出力するプログラムを作成することです。ここで、nはプログラムへの入力として与えられます。ほとんどのクインチャレンジと同様に、ソースコードをファイルとして読み取ったり、組み込みのクイン関数を使用したりすることはできません。 入力 整数0 <= n <len(program)。 出力 プログラムのn番目の文字(バイトではない)。 勝ち ほとんどのcodegolfの質問と同様に、チャレンジを解決するには、最小バイト数を使用してチャレンジに勝ちます。 ボーナス -5%プログラムが負のインデックスをPythonスタイルでサポートしている場合(たとえば、-1がプログラムの最後の文字になります)。以下のボーナスと併用する場合、範囲は負のインデックスをサポートする必要があります。 -20%プログラムが上記の要件に加えて、入力として範囲(任意の形式)をサポートする場合。 -25%プログラムが両方のボーナスを完了した場合。 リーダーボード これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 # Perl, 43 + 2 (-p flag) = 45 bytes 言語名をリンクにして、リーダーボードスニペットに表示することもできます。 # [><>](http://esolangs.org/wiki/Fish), 121 bytes コードスニペットを表示 var QUESTION_ID=70727,OVERRIDE_USER=32700;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function …
14 code-golf  quine 

18
文字列の10進数の乗算
文字列と10進数の2つの入力がある場合、文字列にその数値を掛けて出力します。 キャッチは、数値が浮動小数点数または整数になる可能性があることです。 文字列floor(n)timeを出力してから、最初のfloor((n-floor(n))*len(string))文字を再度出力する必要があります。 その他の注意事項: 入力は常にフロートではなく、intである可能性があります。したがって、1.5、1、および1.0がすべて可能です。ただし、常にベース10になります。例外が必要な場合はコメントしてください。 文字列入力には、空白、引用符、その他の文字が含まれる場合があります。ただし、改行や制御文字はありません。 直接の文字列の繰り返しのためのビルトインはなく、Pythonのような文字列の乗算'a'*5も許可されています。ただし、文字列の追加は許可されています。 テストケース: 入力はコンマとスペースで区切ります。 test case, 1 -> test case case, 2.5 -> casecaseca (will add more later), 0.3333 -> (will(space) cats >= dogs, 0.5 -> cats > 最終ノート: 組み込みの文字列乗算または繰り返し関数を使用する多くの答えがあります。これは許可されていません。ただし、@ VTCの答えは有効です。これは、文字列を乗算せず、フロート入力のみを乗算するためです。したがって、最終的なルールは次のとおりです。文字列を直接乗算する場合、実行できません。
14 code-golf  string 

6
時計(カードゲーム)
時計はスキルを必要としないため、興味深いカードゲームです。それはシングルプレイヤーゲームであり、同じカード構成は常に勝ち負けにつながります。この課題では、特定のカード構成が勝つか負けるかを把握する必要があります。ここでゲームをプレイできます。 ゲームは次のように再生されます。 13枚のカードが裏向きに配られます。各杭には0〜12の番号が付けられています。 0番目のパイルを現在のパイルに設定します 現在のパイルの一番上のカードを表向きにします。 表向きのカードをそれぞれの山の一番下に移動します(4枚のカードが4番目の山の下に入ります)。カードは表向きのままです。この山は現在の山になります。 現在のパイルが完全に表向きの場合、ゲームオーバーです。それ以外の場合は、手順3に戻ります。 ヒント:ゲームは常に0番目のパイルで終了します すべてのカードが表向きになるとゲームに勝ち、裏向きのカードが残っていると負けます。 入出力 各杭を含む2D配列。カードは0から12の数字で表されます(スーツは無関係であり、与えられません)。各パイルの一番上のカードは、各配列の最初の要素です。 入力は整形式であると想定できます。0から12までの52枚のカードが含まれており、各番号は正確に4回含まれています。 ゲームに勝つことができる場合は真実の値を返し、できない場合は偽りを返す必要があります。 テストケース 真実: [[11, 11, 7, 7], [8, 6, 5, 0], [2, 10, 9, 1], [12, 3, 0, 6], [8, 7, 4, 8], [3, 10, 5, 12], [11, 7, 1, 10], [3, 1, 6, 0], [2, 3, 0, …

4
シンプルなきれいなコメントツールを作成する
チャレンジ: 一部のascii-artは作成が苦痛ですが、特にコードが密集している場合は、コードのコメントを読みやすくします。課題は、コメントを矢印付きの単純なASCIIアートに変換する単純なツールを作成することです。変更するコメントは空のコメントで区切られます。 たとえば、Haskellのコメント構文を想定して、これを変換します。 -- -- Here's a thing -- Here's another thing -- The most important thing -- * * * -- f x=x+1*x*1*1*0 これに: -- /------------< Here's a thing -- | /-------< Here's another thing -- | | /-< The most important thing -- | | | -- v …

30
Javaを生成します
あなたの上司は、次のようなコードを書くことを望んでいます。 public static boolean isPowerOfTen(long input) { return input == 1L || input == 10L || input == 100L || input == 1000L || input == 10000L || input == 100000L || input == 1000000L || input == 10000000L || input == 100000000L || input == 1000000000L || input == …

4
妖精チェスの「跳躍」運動パターン
リーパはで動く変則チェスピースのカテゴリである「ジャンプ。」通常の騎士は(1,2)-リーパーです。つまり、各移動には、直交方向に1正方形、垂直方向に2正方形の距離を移動する必要があります。 .o.o. o...o ..N.. o...o .o.o. 多くの異なる跳躍者がいます。(1,3)-リーパーはロングナイト、またはキャメルと呼ばれます。その移動パターンは次のようになります。 ..o.o.. ....... o.....o ...L... o.....o ....... ..o.o.. (2,2)Alfilもあります... o...o ..... ..A.. ..... o...o ...さらに(0,1)ワジール。 .o. oWo .o. チャレンジ 数値のペアを入力として、対応する運動図を出力します。入力をSTDIN /コマンドライン経由で、または引数として提供し、出力をSTDOUTまたは戻り値で提供して、プログラムまたは関数を作成できます。これはcode-golfです。 入力 入力は、2つの整数と大文字のコンマ区切りリストになります。2つの整数は、範囲内0-7(両端を含む)で、減少しない順序になります。入力および出力のオプションの末尾の改行。 上記の4つの例の入力を次に示します。 1,2,N 1,3,L 2,2,A 0,1,W 出力 出力は、正方形の複数行の文字列になります。大文字は、作品の現在の場所を表すために中央に配置されます。移動場所は、4個または8個の小文字で表されますo。正方形内の他のすべてのスペースはピリオドで埋められます。 移動パターンがの場合、0,0大文字のみを出力します。 ヒントとして、2番目の整数(大きい方)の値がNの場合、正方形の辺の長さは常に2N + 1になります。osが常に広場の周囲になります。 追加のテストケース 1,1,F o.o .F. o.o 5,7,Q ..o.........o.. ............... o.............o ............... …

29
間隔のゼロ
あなたの仕事は、2つの非負の整数iとk(i≤ k)を受け取る関数またはプログラムを作成し、すべての整数をiからkし、ピースの選択のベースに(含む)の紙の。この整数、ゼロの数をstdoutなどに出力します。 -30%3番目の引数も受け入れる場合はb、数値を書き留めるための整数ベース。このボーナスを達成するには、少なくとも2つのベースを処理する必要があります。 任意のベースで入力を受け入れることができ、テストケース間でベースを変更できます。 あなたは、引数を受け入れることができi、k必要に応じてb好きなためです。 回答は、単項でない少なくとも1つのベースを処理する必要があります。 テストケース(ベース10): i k -> output 10 10 -> 1 0 27 -> 3 100 200 -> 22 0 500 -> 92 これはコードゴルフです。最小バイトが勝ちます。

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