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

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

1
四つんばいパズルだけではありません
この変形例では四つの四つんばいパズルあなたまで使用してはならないx x's場合は0から100までのすべての番号に到達するために(および他の数)と操作の定義された一連x = 4その後、あなたは4つまで使用することができます4sし、この質問は、古典的な4つの4となりパズル(ただし、4つを正確に4つ使用するのではなく、4つまで使用できます)。と仮定し1 < x <= 9ます。 このバージョンでは、次の演算子のみが許可されます。 加算(+)、減算(-)、乗算(*)、除算(/)。これは実際の除算であることに注意してください5/2 = 2.5。 指数(例:4 ^ 4)。これは、通常手で書かれた場合、余分な記号を含まないためです。 を連結することにより、新しい整数を作成できますxs。たとえば、整数を作成できます4, 44, 444, 4444。 演算子の評価の順序を制御するためだけに、括弧を使用して番号をグループ化することもできます。たとえば、のように括弧を連結と組み合わせることはできません(4/4)(4/4) = (1)(1) = 11。 他の記号は使用できず、標準の操作順序が適用されます。 あなたのプログラムが与えられ、生成する必要がありますx定義された範囲内とnの間0と100、それが存在する場合は、包括その入力のための正しいソリューションを。それ以外の場合、コードは何かを出力して、そのような解決策が存在しないことを示す必要があります。 許容範囲内xおよびn許容範囲内の入力値に対して、マシン上で提出を完了できる必要があります。これはコードゴルフであるため、最短のソリューションが優先されます。 この古い関連する質問は、より多くの演算子(および4のみ)を使用するため、0〜100のすべての数値が解けるため、この課題には当てはまりません。 入出力 コードは入力として2つの整数xをn受け取り、人間が読める便利な形式でソリューション(またはソリューションがないことを示す)を出力する必要があります。入力は、4 6例えば、「数6を作り、4つの4Sまでの使用」を意味します。入力されたのであれば4 6出力は可能性があり(4+4)/4+4。

12
複製された行列の合計
数のリスト[ a 1 a 2 ... a n ]が与えられ、すべての行列Aᵢの合計を計算します。ここで、Aᵢは次のように定義されます(mはすべてのaᵢの最大値です)。 1 2 ⋯ (i-1) i (i+1) ⋯ n +---------------------------- 1 | 0 0 ⋯ 0 aᵢ aᵢ ⋯ aᵢ 2 | 0 0 ⋯ 0 aᵢ aᵢ ⋯ aᵢ . . . . . . . . . . . . …

4
シーズンを決定
前書き: では北半球(すなわち、ヨーロッパ、北米など)、季節は次のように分かれています: - 春: 3月、4月、5月 - 夏: 6月、7月、8月 - 秋: 9月、10月、11月 - 冬: 12月、 一月二月 で南半球しかし(すなわちオーストラリア、南米など)、季節は次のように分かれています: - 春: 9月、10月、11月 - 夏: 12月、1月、2月 - 秋: 3月、4月、5月 - 冬: 6月、7月、8月 この違いは、北半球と南半球が反対の季節を持つ赤道に関する太陽の位置によるものです。 入力: この課題では、2つの入力を使用します。 月に1つ(1 <= m <= 12または0 <= m <= 11)(例とテストケースはすべて1から始まる)。 そして、地球(の緯度の5 '位の-グループのための1 -2 <= p <= 2)、-2南極では、-1南極を除く南半球、ある0熱帯赤道の近くに、ある1北極を除く北半球では、と2あります北極の。 もちろん、北極、南極、および熱帯地方にはまだ季節がありますが、この挑戦​​のために、北極と南極は一定の状態にWinterあり、熱帯地方は一定の状態にあると言いますSummer。 ここで-2は、これらの5つのグループを視覚的に表現しています。-1南回帰線と南極圏の間; 0山羊座の熱帯とがんの熱帯の間; …
11 code-golf  number 

17
Rotonyms 2のリストを作成する
ロトニムス2 「Rotonym」は、ROT13が別の単語(同じ言語)に変換される単語です。 この課題のために、別の定義を使用します。「Rotonym」とは、同じ言語の別の単語に循環シフト/回転する単語です。 例えば: 'stable' < 'tables' < 'ablest' 'abort' > 'tabor' 'tada' >> 'data' チャレンジ 辞書/単語リストを受け入れ、rotonymsの完全なリストを出力または返すプログラムまたは関数を作成します。 順序は関係ありません。 比較では大文字と小文字を区別しないため、入力は小文字のみの辞書として渡されると想定できます。 結果は(ペアではなく)単一の単語として表現される必要があり、重複は含まれないため、入力に重複がないと想定できます。 これはcode-golfです。 例 与えられた ablest abort green irk stable tables tabor tata terra vex you 戻る ablest abort stable tables tabor 実際のテスト 与えられた a aa aal aalii aam aani aardvark aardwolf …
11 code-golf 

1
オートサイクラークイン
馬を作るが、ひねりを加えた。 ステートメント 馬はそのコードを印刷しますが、最初の文字を最後に置きます。 (逆に行うこともできますが、そのメモを回答に含めてください) 出力はソリューションでもあるプログラムでなければなりません。 例:コードがであったと仮定するとfoobar、実行すると、oobarf別の有効なプログラムが返されます。 foobar -> oobarf oobarf -> obarfo obarfo -> barfoo barfoo -> arfoob arfoob -> rfooba rfooba -> foobar ルール あなたのコードは、明らかに盗まれている誰かのコードのある世代の出力であってはなりません コードは2文字を超える必要があります(短いコードは面白くないです) コードには少なくとも2つの異なる文字が含まれている必要があります(例:+++無効) 得点 コードゴルフ最短コードの勝利に挑戦。
11 code-golf  quine 

7
範囲パラメータの回復
説明 すべての要素が最も近い整数に切り捨てられた範囲関数の結果が与えられます。あなたの目標は、元のリストを回復することです。 たとえば、次の関数(Python3)は、プログラムの入力を生成します。 from numpy import arange, floor def floored_range(A, B, C): return list(floor(arange(A, B, C))) プログラムの出力は、元のデータの有効な推測である必要があります。ここで、有効な推測とは、フロア化されたときに入力と正確に一致し、範囲関数の可能な出力でなければならないことを意味します(つまり、グラフ化された場合、完全に直線を形成する必要があります)。 例 Input: [1,2,3,4] Output: [1,2,3,4] Input: [1,2,3,4] Output: [1.9,2.7,3.5,4.3] Input: [1,2,3,4,5,5] Output: [1.9,2.7,3.5,4.3,5.1,5.9] Input: [1,1,2,2,3,3,4,4] Output: [1,1.5,2,2.5,3,3.5,4,4.5] Input: [1,1,2,3,3,4] Output: [1,1.7,2.4,3.1,3.8,4.5] Input: [56, 54, 52, 50, 48, 45, 43, 41, 39, 37, 35, …
11 code-golf 

4
採石場のタイムラプスを掘る
建築物のクールなタイムラプスや他の大規模な作業を数分で見るのが好きですか?ここで作りましょう。 採石場を掘る掘削機を見ながら、毎日写真を撮って全体の進捗状況を確認します。そして、あなたの仕事はこのプロセスを見せることです! 採石場は、その最初の層の幅によって定義されます。 掘削機は、1日で掘る能力によって定義されます。 入力 採石場の幅。整数、常に1以上。 掘削機の掘削速度。整数、常に1以上。 出力 毎日の採石場の掘削の進捗。平らな手つかずの地面から始まり、完成した採石場で終わりました。 ルール 最終日には、掘削機の能力よりも掘るユニットが少なくなる可能性があります。過剰な作業はどこにも使用されないため、完全に掘られた採石場を出力するだけです。 すべての日の進行状況が一度に出力に存在する必要があります。出力の前日の進行状況をクリアまたは上書きすることはできません。 毎日の出力の末尾および先頭の改行は、妥当な数であれば受け入れられます。 これはcode-golfなので、コードをできるだけコンパクトにします。 明確化 作業は平らな地面から始まります。表示される地面の長さは、採石場の幅+ 2です。したがって、採石場の両側には常に1つのアンダースコア文字があります。 __________ 掘られた採石場は均等な幅でこのように見えます: _ _ \ / \ / \ / \/ そして、このような奇数幅 _ _ \ / \ / \ / V 採石場の進捗状況の例を次に示します。 _ _______ V dug 1 unit _ ______ \/ dug 2 …

3
多項式->積分
有理係数を持つ1つの変数の多項式が与えられた場合1、変数、定積分のみを含む同等の式を出力します。例えば、 - X 2 ∫のように表すことができるX ∫ 1 1 1D T X D U。 E := 1 | var | ∫EEEdvar 合理的な入力/出力方法が許可されます。 例: スコアは、コード長∫にテストケースで使用されるシンボルの数を掛けたものになります。プログラムを採点できるはずです。最低スコアが勝ちます。 テストケース: 4/381*x^2+49/8*x^3-17/6 311/59*x^2-92/9*x^3-7/15*x 333/29*x^3+475/96*x^8 ゴルフだけはコードやアウトプットだけでゴルフをすることはできませんので、ゴルフは難しくなります。したがって、試してみるまで変化が私のスコアを助けるか傷つけるかはわかりません。 スコアが作成を制限しないようにしてください。他の部分がひどく残ったとしても、スコアの主に適切に最適化された部分で答えることを歓迎します。

2
私の番号の隣人を見つける
入力は、近傍情報を含むi行で構成されます。各I 番目の行は、の隣人表す、4つの値が含まれている私に北、東、南と西はそれぞれ、方向を。したがって、各値は、行1から開始して、i 番目の行の指定された方向の隣接を表し、最大65,535行になります。0値は、その方向への隣人を示していません。 たとえば、最初の行が「0 2 3 10」の場合、i隣人には3つの隣人がいることを意味します。北に1人、東に2人、南に3人、西に10人です。 北西に最も近い値から始めて、近隣の配列を出力する必要があります。各ネイバーは、他のネイバーに対する相対的な位置に1回だけ表示されます。いくつかの例を見てみましょう。 入力: 0 0 0 0 隣人なし(空の場合)、出力: 1 入力: 0 2 0 0 0 0 0 1 1には東に隣接2があります。2には西に隣接1があります 出力: 1 2 入力: 0 2 0 0 0 0 3 1 2 0 0 0 1には東に隣接2があります。2には、西に隣接1、南に3があります。3は北に隣人2がいます 出力: 1 2 3 入力: 2 0 0 …

4
Base Piの整数
バックグラウンド: Pi(π)は超越数であるため、終了しない10進表現を持ちます。同様に、他の整数ベースで記述された場合、表現は終了しません。しかし、baseで記述した場合はどうなりπますか? 10進数の数字は10の累乗を表します。 π = 3.14… = (3 * 10^0) + (1 * 10^-1) + (4 * 10^-2) + … したがって、base πでは、数字は次のべき乗を表しますπ。 π = 10 = (1 * π^1) + (0 * π^0) この新しいベースでは、整数は終了しない表現になりました。したがって、10進数で10は次のようになります。 10 => 100.01022… = (1 * π^2) + (0 * π^1) + (0 * π^0) + …

2
Collat​​zスタイルの卵狩り
グレートAPIイースターエッグハントに触発されました! 概要 あなたのタスクは、可能な限り少ないステップを使用して、「コラッツ空間」(後述)で所定の整数を検索することです。 前書き この挑戦は有名なCollat​​zの予想に基づいています。スーパーコラッツナンバーの印刷から抜粋しました。 このCollat​​zシーケンスあなたは、任意の正の整数で始まるこの例のために、我々は10を使用し、それへのステップのセットを適用する場所(も3X + 1問題と呼ばれる)は、次のとおりです。 if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1 このCollat​​z距離C(m,n)の2つの数の間のmとn、この課題の目的のためには、2つの数字の間の距離であるこのCollat​​zグラフ(使用して次のように定義され、(この概念についての私に告げるため@tshにクレジット)21と13の例として): m(この場合、21)のCollat​​zシーケンスを書き留めます。 21, 64, 32, 16, 8, 4, 2, 1 n(この場合、13)のCollat​​zシーケンスを書き留めます。 13, 40, 20, 10, 5, 16, 8, …

20
月の2点間の距離
月(lat1, lon1)と上の2つのポイントの緯度/経度を指定して、haversineの式と同じ結果を与える式を(lat2, lon2)使用して、2つのポイント間の距離をキロメートルで計算します。 入力 lat1, lon1, lat2, lon2度(角度)の4つの整数値または ϕ1, λ1, ϕ2, λ2ラジアン単位の4つの10進数値。 出力 2つのポイント間の距離(キロメートル単位、精度または丸められた整数)。 ハーバーシン式 どこ r は球体の半径です(月の半径が1737 kmであると仮定)、 ϕ1 ラジアン単位のポイント1の緯度 ϕ2 ラジアン単位のポイント2の緯度 λ1 ラジアン単位のポイント1の経度 λ2 ラジアン単位のポイント2の経度 d 2点間の循環距離 (ソース:https : //en.wikipedia.org/wiki/Haversine_formula) 他の可能な式 d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1)) @milesの式。 …

3
クレイジーだが合理的な基盤
ベース10、ベース2、ベース36、さらにはベース-10に基づいて多くの課題がありますが、他のすべての合理的なベースはどうでしょうか? 仕事 基数10の整数と有理数基数を指定すると、その基数の整数を(配列、文字列などとして)返します。 処理する 合理的なベースを想像するのは難しいので、Exploding Dotsを使用して視覚化しましょう。 ベース3で17を表すこのアニメーションを検討してください。 各ドットは単位を表し、ボックスは数字を表します。右端のボックスは自分の場所、中央のボックスは3 ^ 1の場所、左端のボックスは3 ^ 2の場所です。 私たちは自分の場所に17個の点から始めることができます。ただし、これは3を基数としているため、1の場所は3未満でなければなりません。したがって、3つのドットを「爆発」させ、左側のボックスにドットを作成します。爆発可能なドットのない安定した位置になるまでこれを繰り返します(つまり、同じボックスに3つのドット)。 したがって、基数10の17は基数3の122です。 分数ベースは、いくつかのドットを複数のドットに分解することに似ています。ベース3/2は3ドットを爆発させて2を作成します。 ベース3/2で17を表現: したがって、基数10の17は基数3/2の21012です。 負の基底も同様に機能しますが、記号を追跡する必要があります(-1に等しいいわゆるアンチドットを使用します。白丸で表されます)。 ベース-3で17を表現: すべてのボックスの記号を同じにするために、余分な爆発があります(ゼロを無視して)。 したがって、基数10の17は基数-3の212です。 上記の2つのケースの組み合わせでは、負の有理数ベースも同様に機能します。 ルール 標準的な抜け穴はありません。 出力の各「数字」の符号は同じ(またはゼロ)でなければなりません。 すべての数字の絶対値は、基数の分子の絶対値より小さくなければなりません。 ベースの絶対値は1より大きいと仮定できます。 有理数ベースは、その最小の縮小形にあると仮定できます。 入力では、分子のベースと分母を別々に使用できます。 数値に複数の表現がある場合、それらのいずれかを出力できます。(例えば、ベース10に12とすることができる{-2, -8}と{1, 9, 2}ベース-10で) テストケース: フォーマット: {in, base} -> result {7, 4/3} -> {3, 3} {-42, -2} -> {1, 0, 1, …

26
電子貯金箱
貯金箱は、中に収集コインを使用した容器である。この課題は、4枚の米国のコイン使用の場合:四半期、ダイム、ニッケル、およびペニーを。 チャレンジ あなたの課題は、電子貯金箱を作成することです。プログラム(または関数)を作成して、実行(または呼び出し)したときに、所有している各コインの数と、コインの合計金額を出力(または返す)します。 入力 貯金箱に入れるコインの文字列、配列など(お好み)(大文字と小文字は区別されません)。 Q - Quarter(Value of 25) D - Dime(Value of 10) N - Nickel(Value of 5) P - Penny(Value of 1) 出力 選択した整数以外の区切り文字で区切られた、入力からのコインの数と合計金額。(コインの合計を出力する順序は重要ではありませんが、コインの合計値(合計)は最後の要素でなければなりません) 例 Input -> Output P -> 1,0,0,0,1 or 0,0,0,1,1 or 0,0,1,0,1 or 1,1 N -> 0,1,0,0,5 D -> 0,0,1,0,10 Q -> 0,0,0,1,25 QQQQ …
11 code-golf 

3
同じ名前、ラメ!
名前のリストが指定されたときに、指定された名前の重複が姓の一意の短縮バージョンを持つリストを出力または返す関数またはプログラムを作成します。 入力: 名前のリスト。名前は、スペースで区切られた名と姓で定義されます。名前は、大文字と小文字のみを含む空でない文字列です。リストは、文字列の配列、または定数を非アルファ、非スペース文字で区切った名前にすることができますが、出力は入力と同じ形式である必要があります。 出力: これらの規則によって変更された、入力と同じ順序および形式の入力された名前のリスト: 一意の名の場合、名のみを出力します 同じ名前を共有する名前の場合: 彼らの名に加えて、別の名前と共有されていない姓の最も短い一意のバージョンを追加し、その後にピリオドを付けます。たとえば、次の John Clancy, John SmithようJohn C.,John S.にJames Brown, James BratteなりますJames Bro.,James Bra. ある姓が別の姓のサブセットである場合(など)Julian King,Julian Kingsley、ピリオドなしの小さい姓の完全な姓を返します。例は次のようになりますJulian King,Julian King. 基本的には期間が正規表現を表し.+、唯一 1名がそれと一致している必要があります。 あなたは誰も同じ名と同じ姓を共有しないと仮定するかもしれません 名前は大文字と小文字が区別されます テストケース: John Clancy,Julie Walker,John Walker,Julie Clancy -> John C.,Julie W.,John W.,Julie C. Julian King,Jack Johnson,Julian Kingsley > Julian King,Jack,Julian King. Jack Brown,Jack …

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