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

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

25
シーケンスの保持/ドロップ/増加
私が話しているシーケンスは次のとおりです。 {1, 4, 5, 9, 10, 11, 16, 17, 18, 19, 25, 26, 27...} 1から開始し、1を保持し、次の2をドロップし、次の2を保持し、3をキープし、3を保持します。はい、OEIS(A064801)にもあります! チャレンジ 整数が与えられた場合n>0、上記のシーケンスのn番目の項を見つけます テストケース Input -> Output 1->1 22->49 333->683 4444->8908 12345->24747 これはコードゴルフであるため、バイト単位の最短回答が勝ちです!がんばろう!

23
リストは分割可能ですか?
(説明を盗まれた)これに触発された バックグラウンド 2つのリストA = [a_1, a_2, ..., a_n]とB = [b_1, b_2, ..., b_n]整数のリストがあるとします。私たちは、言うAで潜在的に割り切れるでB存在する場合の順列Bことが可能a_iで割り切れるb_iすべてのためにi。問題は次のとおりです。すべてで割り切れるBように並べ替える(つまり、並べ替える)ことa_iは可能ですか?たとえば、あなたが持っている場合b_ii A = [6, 12, 8] B = [3, 4, 6] そして、その答えは次のようになりますTrueよう、Bように並べ替えることができますB = [3, 6, 4]し、我々はそれを持っているだろうa_1 / b_1 = 2、a_2 / b_2 = 2と、a_3 / b_3 = 2整数であり、そのすべてが、そう、Aによって潜在的に割り切れますB。 出力すべき例としてFalse: A = [10, 12, 6, 5, 21, 25] B …

21
スペースを節約するために整数を折りたたみます!
クレイジーな数学者は幅広い数のコレクションを所有しているため、彼が残したスペースはかなり限られています。いくらかを節約するために、彼は整数を折り畳まなければなりませんが、残念ながら彼は本当に怠け者です。あなたが彼を助けたいなら、あなたの仕事は、私たちの数マニアックのために与えられた正の整数を折り畳む関数/プログラムを作成することです。 整数の折り方 数字の合計で均等に割り切れる場合は、数字の合計で割ります。その要件を満たさない場合は、その桁数の合計で割ったときに残りを取ります。結果がに達するまでプロセスを繰り返します1。折り畳まれた整数は、実行する必要があった操作の数です。例を見てみましょう(たとえば1782): その桁の合計を取得します1 + 7 + 8 + 2 = 18。1782はで割り切れる18ので、次の数字は1782 / 18 = 99です。 99はで割り切れない9 + 9 = 18ため、残りを取ります:99 % 18 = 9。 9は明らかにで割り切れる9ので、それを分割して取得し1ます。 結果は3、到達するために3つの操作が必要であったからです1。 ルールと仕様 一部の整数の桁数の合計は1、10またはなど100です。あなたのプログラムはそのような場合に対処する必要はありません。つまり、入力として指定された整数の桁数の合計がに等しくないことが保証され、指定された整数を使用した1操作では、桁数の合計が得られません1(1それ自体は例外で、ターゲット")。たとえば、入力として、10または受信することはありません20。 入力はより大きい正の整数になり1ます。 デフォルトの抜け穴が適用されます。 入力を取得し、標準的な平均値で出力を提供できます。 テストケース 入力->出力 2-> 1 5-> 1 9-> 1 18-> 2 72-> 2 152790-> 2 152-> 3 666-> 3 …

14
いくつの州と国境を接していますか?
小さい頃、ベッドの向かいの壁にアメリカの大きな地図を貼り付けました。私が退屈したとき、私はその地図を見つめ、ものについて考えました。4色の定理、または他のほとんどの州に隣接する州のようなもの。若い人に数える際の頭脳を節約するために、タイムマシンを発明し、入力に隣接する状態の数を教えてください。時間は微妙なので、これはできるだけ短くする必要があります。 タスク このページ(archive.org mirror)に記載されているように、フルネームまたは郵便略称で米国50州のいずれかを指定すると、国境を接する州の数を返します。以下は、完全な州名のすべての入力を、このWebサイトにある隣接する州の数にマッピングしたものです。 Missouri, Tennessee -> 8 Colorado, Kentucky -> 7 Arkansas, Idaho, Illinois, Iowa, Nebraska, New York, Oklahoma, Pennsylvania, South Dakota, Utah, Wyoming -> 6 Arizona, Georgia, Massachusetts, Michigan, Minnesota, Nevada, New Mexico, Ohio, Virginia, West Virginia -> 5 Alabama, Indiana, Kansas, Maryland, Mississippi, Montana, North Carolina, Oregon, …
20 code-golf  number 

30
Nの約数の合計を見つける
ユーザーが1〜Nの範囲で入力した数値(1≤N≤100)の約数の合計を画面に表示するプログラムを作成します。 これはOEIS A000203です。 例: 入力:7 7 / 1 = 7 7 / 7 = 1 7 + 1 = 8 出力: 8 入力: 15 15 / 1 = 15 15 / 3 = 5 15 / 5 = 3 15 / 15 = 1 15 + 5 + 3 + …

15
衝突の予測:強盗は逃げますか?
道路は数直線である0と考えてください。開始から無期限に続く: ................................................................. 道路には2台の車があります:CとR。Cキャッチしようとしている警官R、強盗です。C開始時0、およびR道路上のどこかを開始します。 C.............................R.................................. 警官はすでに動いています-彼は強盗を追いかけています。彼は一定の速度を持っています。強盗はちょうど彼の車に飛び乗った。彼は加速しています。ティックごとに、強盗の速度は加速によって増加します。 警官の速度はで7あり、強盗の加速はであるとし1ます。強盗がで始まる場合30、これは道路が各ティックのように見えることです: C.............................R.................................. .......C.......................R................................. ..............C..................R............................... .....................C..............R............................ ............................C...........R........................ ...................................C.........R................... ..........................................C........R............. .................................................C........R...... 上記の最後のティックの後、強盗の速度は警官の速度に等しく、彼はまだ先です。警官は一定の速度で動いており、強盗はまだ高速化されているため、強盗は脱出し、真実の値を出力します。ただし、警官の速度が9... C.............................R.................................. .........C.....................R................................. ..................C..............R............................... ...........................C........R............................ ....................................C...R........................ .............................................X................... 強盗は逃げ(でマークすることができます前に...その後、警官が強盗に追いつくX)、falsey値を出力しますので。 あなたのタスク 3つの入力(警官の速度、強盗の位置、強盗の加速度)が与えられると、強盗が逃げるかどうかを決定します。 ルール 警官は常にから始まり0ます。 すべての入力は正の整数になります。 ダニの後、警官の位置が強盗の位置以上である場合、警官は強盗を捕まえます。 強盗はまだ捕まっていないときに逃げ出し、彼の速度は警官よりも速くなります。 プログラムは出力後に終了する必要があります。 強盗は、各ティックを移動する前に加速します。 テストケース Cop Speed, Robber Position, Robber Acceleration -> Output 7, 30, 1 -> truthy 9, 30, 1 -> falsey …

4
矩形差
この課題では、2つの重複する長方形が与えられ、一方を他方から削除して作成された長方形を計算する必要があります。 たとえば、黒い長方形から赤い長方形を削除する場合: 次の2つの長方形セットのいずれかになります。 また、以下を処理する必要があります。 より明確にするには: AとBの2つの長方形の座標を入力します。 Bを除くAのすべての領域をカバーする、重複しない最小の長方形を出力する必要があります。可能なカバーは許可されています 直交座標は4つの整数として渡されます。2つのペア(2つのコーナーポイントを表す)で、または4つの整数のタプル/リストとして渡すことができます。入力と出力は一貫している必要があります。 AとBは必ずしも重複または接触するわけではなく、それぞれ少なくとも1 テストケース: [(0 0) (5 5)] [(3 4) (8 7)] -> [(0 0) (5 4)] [(0 4) (3 5)] # or [(0 0) (3 5)] [(3 0) (5 4)] [(2 4) (10 11)] [(5 5) (6 6)] -> [(2 4) (10 5)] …

28
パートナーを見つける
チャレンジ 2タプルの任意のリストと、それらのタプルの1つにある単一の要素が与えられた場合、その「パートナー」、つまりgiven aおよび[(i,j),...,(a,b),...,(l,m)]outputを出力しますb。すべてのタプルは一意であり、タプル内のすべての要素は文字列であると想定できます。また、あなたは両方を持っていないと仮定(x,y)して(y,x)。 テストケース Input Output [("(", ")"), ("{", "}"), ("[", "]")], "}" "{" [("I'm", "So"), ("Meta", "Even"), ("This", "Acronym")], "Even" "Meta" [("I", "S"), ("M", "E"), ("T", "A")], "A" "T" [("test", "cases"), ("are", "fun")], "test" "cases" [("sad", "beep"), ("boop", "boop")], "boop" "boop" 最少バイト数が勝ちます!

11
ラプンツェル、ラプンツェル、あなたの髪を失望させます!
説明 誰もがラプンツェルと王子のおとぎ話を知っていると思います。そうでない人のために:ここでそれを読んでください。しかし、ラプンツェルは髪を切ったばかりだったので、王子を登らせるのに十分な長さではなかったかもしれません!彼女はとても悲しくなります。 チャレンジ あなたの仕事は、王子が彼女の髪を落とすように彼女を求めるときにラプンツェルが言っていることを評価する関数を書くことです。s Aaaah!の数がa同じであることでveeeery幸せと言いlength of her hair - height of the towerます。それ以外の場合は、彼女の髪は、十分な長さを持っていない、と彼女は泣いて開始しますBooho!。ここで、osの前hの平等な三分の二height of the tower - length of her hair、及びoS hは休息された後。oの後のs の数はB丸める必要があるため、を取得2.6する場合は3 oがあり、その他はの後になければなりませんh。 I / O 正の整数(nullを含む)は、引数として、リストとして、または2つの単一の数字として、最も便利な順序で与えられますが、それらの順序を指定する必要があります。出力として、ラプンツェルが言っていることを印刷します。 テストケース テストケースでは、最初の数字は髪の長さです。 0, 0 -> 'Bh!' (probably a dry sob..) 2, 1 -> 'Aah!' 1, 2 -> 'Boh!' 1, 4 -> 'Booho!' …
20 code-golf 

21
フィボナッチ数内
チャレンジ 整数の入力が与えられると、フィボナッチ数のインデックス(0または1から始まるインデックス-あなた次第ですが、答えはどれかを明記してください)とともに入力を含む最初のフィボナッチ数を返します。たとえば、12の入力が与えられた場合26: 121393、数値(12 1393)内で12が検出され、フィボナッチ数のインデックス26にあるため、プログラムは戻ります。 例 入力が与えられた場合: 45 プログラムは以下を出力するはずです。 33: 3524578 入力: 72 出力: 54: 86267571272 入力: 0 出力: 0: 0 入力: 144 出力: 12: 144 得点 これはcode-golfであるため、各言語で最も短い回答が優先されます。

14
スペイン語IDカード制御文字計算機
これは非常に単純なアルゴリズムであり、多くの異なる言語で解決できると確信しています。スペインでは、IDカード(DNIとして知られる)は8つの数字と1つの制御文字で構成されています。制御文字は、次のアルゴリズムを使用して計算されます。数値を23で除算し、操作の残りを取得して、この表に従って文字で置き換えます。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 T R W A G M Y F P D X B N J Z S Q V H L C K E DNIがスペインに住んでいる外国人のものである場合、最初の数字はに変更されX、YまたはNIEZと呼ばれます。この場合、制御文字を計算する前に次の置換が行われます。 X Y …

14
パスカルの菱形
パスカルの菱形(実際には三角形)は、次のパターンを追加することによって取得されます。 * *** x の代わりに * * x これは、各セルがそのすぐ上の行の3つのセルとその上の行2の1つのセルの合計であることを意味します。Pascalの三角形のように、0番目の行には1三角形を生成する単一の行があります。 これがパスカルの菱形の最初の数行です 1 1 1 1 1 2 4 2 1 1 3 8 9 8 3 1 仕事 行番号(上から始まる)と列番号(その行の最初の非ゼロ項目から始まる)を指定すると、その特定のセルの値が出力されます。両方の入力に1または0のインデックスを付けることができます(必要に応じて組み合わせることができます)。 これはコードゴルフなので、ソースコードのファイルサイズをできるだけ小さくすることを目指してください。 OEIS A059317

29
リストの2番目の最大値を実行しています
整数のリストが与えられた場合、タスクは、2から入力リストの長さまでの各kについて、最初のk要素で2番目に大きい値を出力することです。 言い換えると、入力の各プレフィックスに対して2番目に大きい値を出力します。 最初の要素(k = 1)に任意の値を出力するか、1つの要素のリストに2番目の最大値がないため、この値を単純に省略できます。入力に少なくとも2つの要素があると仮定できます。 最短のコードが優先されます。 例 Input: 1 5 2 3 5 9 5 8 Output: 1 2 3 5 5 5 8 Input: 1 1 2 2 3 3 4 Output: 1 1 2 2 3 3 Input: 2 1 0 -1 0 1 2 Output: 1 1 …

30
スクエアはどのように終わりますか?
ベース-10では、すべての完全な正方形はで終わる0、1、4、5、6、又は9。 ベース-16では、すべての完全な正方形はで終わる0、1、4、または9。 Nilknarfは、この答えの理由とこれをうまく解決する方法について説明していますが、ここでも簡単に説明します。 10 進数のNを 2乗すると、「1」桁は「10」桁や「100」桁などの影響を受けません。だけで「1」の数字Nはの「1」の数字に影響するN 2を簡単に(多分ないgolfiest)の方法は、すべての可能な最後の数字を見つけることのために、N 2を見つけることですnは2 MOD 10はすべてのために0 <= N < 10。各結果は、可能な最後の数字です。Base-mの場合、すべての0 <= n < mに対してn 2 mod mを見つけることができます。 入力Nが与えられると、Base-Nの完全な正方形のすべての可能な最後の数字を出力する(重複なしで)プログラムを作成します。あなたは、想定し得るNがより大きく、0、そのNは、という小さな十分であるN 2がオーバーフロー(あなたがすべての方法をテストすることができない場合はN 2は、私は、あなたのブラウニーポイントの有限量をあげるが、ことを知っていますブラウニーポイントから実際のポイントへの交換レートは1から無限大です)。 テスト: Input -> Output 1 -> 0 2 -> 0,1 10 -> 0,1,5,6,4,9 16 -> 0,1,4,9 31 -> 0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28 120 -> 0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105 これはcode-golfなので、標準のルールが適用されます! (これがあまりにも簡単だと思う場合、またはトピックに関するより詳細な質問が必要な場合は、この質問を検討してください:正方形の二次剰余検定の基底の最小カバー)。

30
私の価値はどこですか?
私の上司は、配列内のアイテムを検索し、その値が発生するインデックス/インデックスを彼に与えるメカニズムを実装するようになりました。 あなたのタスク: 配列と値(String、Integer、Float、またはBoolean)を受け取り、値が発生する配列のインデックスを返すプログラムまたは関数を作成します(インデックスが0または1のいずれか)。値が配列にない場合、空の配列を返します。 入力: Aに存在する場合と存在しない場合がある配列Aと値V。 出力: VがAで発生するインデックスを含む配列、またはVがAで発生しない場合は空の配列。 テストケース: テストケースは0ベースであることに注意してください。 12, [12,14,14,2,"Hello World!",3,12,12] -> [0,6,7] "Hello World", ["Hi", "Hi World!", 12,2,3,True] -> [] "a", ["A",True,False,"aa","a"] -> [4] 12, [12,"12",12] -> [0,2] 得点: これはcode-golfであるため、バイト単位の最低スコアが優先されます。

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