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

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

4
国際標準の用紙サイズの出力区分
定義されたISO用紙サイズ: Aシリーズの用紙サイズは、次の要件によって定義されます。 The length divided by the width is the square root of 2. The A0 size has an area of 1 unit. Each subsequent size A(n) is defined as A(n-1) cut in half parallel to its shorter sides. 仕事: 細分化f[n]された入力A0が与えられますn。 テストケース: f[1]にf[12]: ここで、A0はで与えられますが f[1]、このインデックスは必須ではありません。 受賞基準: バイト単位の最短コードが優先されます。

18
フィボナッチ指数
このチャレンジでは、いくつかの数値の合計の結果を出力します。これらの数字は何ですか?さて、あなたは(、入力が与えられa、b整数(正、負、またはゼロ)、である、) a != b、およびa < b、および内の各整数aおよびb(それらを含む)フィボナッチ数に応じて指数を持つことになります。わかりにくいので、例を示します。 Input: (-2, 2) Output: -2**1 + (-1**1) + 0**2 + 1**3 + 2**5 = -2 + -1 + 0 + 1 + 32 = 30 最初のフィボナッチ数がで表されるf(0)場合、式は次のとおりです。 a**f(0) + ... + b**f(b-a+1) 入力、処理、出力 上記を明確にするために、いくつかのテストケース、入力の処理、および予想される出力を以下に示します。 Input: (1, 2) Processing: 1**1 + 2**1 Output: 3 Input: (4, …

10
この猫にはバグがありますか?本当に?
チャレンジ: 入力を(目に見えるASCII範囲内で)読み取り、いくつかの変更を加えて出力します。 ランダムに入力された10文字の各セット(50/50): 1つの文字を*(目に見えるASCII範囲内のランダムなものに置き換えます)(例:にlumberjackなりますlumbeZjack) または1文字を削除します(例:にlumberjackなりますlmberjack) *セットが10文字未満の場合、変更する必要はありませんが、変更できます。 **文字は、ランダムである限り、1つの入力と同じにすることができます。 例: 入力:Go home cat! You're drunk! 出力:(Go hom cat! YouLre drunk! 出力はランダムになる可能性があるため、テストケースとして使用しないでください) ルール: code-golf、最小の文字が勝ちます!

7
Squareまでの合計桁
任意の整数x> 0および任意の基数y> 3が与えられます。 xのすべての数字を合計します(セットベースで記述されている場合)。 これに可能な限り最高の桁を掛けます(常にですbase -1)。 この値がなるまで繰り返します (y - 1) ^ 2 検索されるのは、反復回数とステップです。 例1: x= 739 y= 7 searched: (7 - 1) ^ 2 = 36 based: (b7)2104 sum: (dec)7 mul: (dec)42 based: (b7)60 sum: (dec)6 mul: (dec)36 2 steps needed -> answer is [2, 739, 42, 36] or [739, …

2
モンドリアンパズルシーケンス
n X n正方形を複数の一致しない整数側の長方形に分割します。a(n)は、最大面積と最小面積の最小差です。 ___________ | |S|_______| | | | L | | |_|_______| | | | | | |_____|___| |_|_________| (fig. I) 最大の長方形(L)の面積は2 * 4 = 8で、最小の長方形(S)の面積は1 * 3 = 3です。したがって、違いは8 - 3 = 5です。 整数を指定するとn>2、可能な限り最小の差を出力します。 投稿時のシーケンスのすべての既知の値: 2, 4, 4, 5, 5, 6, 6, 8, 6, 7, 8, 6, 8, …

3
ニムでのゴルフのヒント
ニムでゴルフをするための一般的なヒントは何ですか?私は、コードゴルフの問題に適用でき、少なくともNimに固有のアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。 回答ごとに1つのヒントを投稿してください。
11 code-golf  tips 

7
線形化されたツリーですか?(幅優先版)
バックグラウンド ラベルのないツリーは次のようになります。 o / | \ o o o | / \ o o o このツリーを線形化するには、まず各ノードoにその子ノードの数でラベルを付けます。 3 / | \ 1 0 2 | / \ 0 0 0 そして、一行ごとに、左から右へという意味で、数字をリストに一気に書きます。 [3, 1, 0, 2, 0, 0, 0] これは、上記のツリーの一意かつ明確な表現です。つまり、2つの異なる純粋なツリーが同じ線形化を持たず、リストから元のツリーを再構築できることを意味します。 各ツリーは特定の整数リストに対応しますが、各整数リストは有効な線形化されたツリーを[2, 0, 0, 0]表すわけではありません。たとえば、有効なツリーを表しません。 [2,0,0,0] -> 2 [0,0,0] -> 2 [0,0] -> …

4
CUSRS-完全に役に立たない文字列リファクタリングシステム!
前書き 私は、常にPPCGで発生するSBU(Short But Unique)チャレンジの大ファンです。CUSRSは文字列をリファクタリングするように設計されたシステムです。CUSRS関数は2つのパラメーターを取り、1つの文字列を出力します。 チャレンジ 以下を行うためのプログラム、関数、ラムダ、または許容可能な代替物を作成します。 (例として)与えられString input、次のように使用してString refactorリファクタリング:inputrefactor refactor文字列の形式になり((\+|\-)\w* *)+、例えば、(正規表現): +Code -Golf -lf +al 各セクションは、実行するリファクタリングアクションinputです。各プログラムにはポインターもあります。 + 文字列内のポインターの現在位置にその接尾辞(プラスなし)を挿入し、ポインターを0にリセットします。 各操作をinput文字列に適用し、結果を返す必要があります。 例: input: Golf +Code //pointer location: 0 output: CodeGolf //pointer location: 0 -接尾辞が見つかるまで、文字列を介してポインタをインクリメントします。接尾辞は文字列から削除され、削除されたテキストの左側にポインタが残ります。接尾辞が見つからない場合、ポインタは単に文字列の最後まで進行し、そこに残ります。 input: Golf -lf //pointer location 0 output: Go //pointer location 2 例 input: "Simple" "-impl +nip -e +er" …
11 code-golf  string 

7
建物解体
チャレンジ 毎秒1フロアのレートで特定の建物を解体するための完全なプログラム/機能を記述します。 入力 入力がある建物を通してSTDIN(またはあなたの言葉で呼ばれているもの)、または貫通ARGUMENT関数の。 t = 0 s | |#| {#} |# #| |# # #| |# # #| |# # #| TTTTTTT 入力は以下で構成されます: | フロアの開始と終了をマークします。 {、}爆発物で床をマークします。 # は装飾用の窓です。 それはそこ#にない床の中のどこにでもあるスペースです。 T 地面をマークします(取り壊すことはできません)。 * 爆発した床をマークします。 入力規則: 建物は1 |から始まり、地面で終わります(no(T)= no(char used in ground floor))。 窓#はすべてのフロア内のすべての奇妙な場所にあります。 T 入力の終了をマークします。 唯一の1階には爆発物で構成されています。 すべてのフロアは奇数で作られています。文字の。 床を下るとき、床は前の床と同じサイズにすることも、2文字大きくすることもできます。 入力のアレイとすることができるchars、またはstrings。 出力: …

2
六角形座標:極座標からデカルト座標
ウィキペディアは極座標について述べています: 数学では、極座標系は2次元の座標系であり、平面上の各点は、基準点からの距離と基準方向からの角度によって決定されます。 これは、六角形のグリッドを記述するのに最適のようです。たとえば、次の六角形のグリッドを考えてみましょう。 A B C D E F G H I J K L M N O P Q R S 基準点は六角形の中心(「J」)になり、基準角は六角形の左上隅(「A」)になります。ただし、角度は、角度ではなく、このポイントから六角形の外側を回る時計回りのステップ数で説明します。したがって、角度ではなく「ステップ番号」と呼びます。 たとえば、「C」は半径が2(中心から2リング離れているため「J」)であり、ステップ番号が2(「A」から時計回りに2つ前方)であるため、(2、2)にあります。 ')。同様に、「O」は(1、3)にあります。これは、中心から1リング離れているため、「E」(基準角度上)から時計回りに3歩進むためです。 完全を期すために、「J」は(0、0)にあります。これに到達するには0歩、時計回りに0歩が必要です。 これで、デカルト座標で六角形を記述することもできますが、オフセットのため、これは少し奇妙です。極座標と同様に、中心を(0、0)に置きます。各スペースも座標を占めるため、「K」は(1、0)ではなく(2、0)にあります。これにより、(-2、2)に「A」、(1、-1)に「O」が配置されます。 チャレンジ 極座標の六角形座標を指定して、デカルト座標で同じ座標を出力します。これらの座標を取り、適切な形式で回答を出力できます。これは、必要に応じて入力の順序を逆にすることができることを意味します。これはまた、座標を(Y、X)として出力できることを意味しますが、そうする場合は、混乱を避けるために回答にこれを記載してください。 負の半径を処理する必要はありませんが、負の角度、または六角形の周りの完全な回転以上の角度を取得する場合があります。たとえば、入力として(1、10)または(1、-2)を受け取る場合があります。これらは両方とも前の六角形の「N」に対応します。入力のために非整数を処理する必要はありません。 サンプルIO #Polar #Cartesian (0, 0) (0, 0) (1, 2) (2, 0) (6, 0) (-6, 6) (2, -3) (-3, -1) (4, …

14
海で迷子になって助けて!
前書き 今日、私はカヌーと一緒に一人で釣りに行きました。残念なことに、私は眠りに落ち、小川が私を連れ去り、オールを失いました。海岸が見えないので遠くに行かなければなりません! 私は携帯電話を持っていますが、塩水で濡れたために故障しています。マイクと電話のスピーカーが壊れているため、何も話せず、聞こえませんが、海岸のビーチにいる友人にSMSを送信できます! 私の友人は非常に強力なトーチを持っていて、彼は正しい方向を示すために竹の杖の上にそれを上げましたが、私はオールを持っていないのでrowいできません。キャッチ! 友人は、トーチを海面の11.50メートルに維持していると言ったので、地平線のすぐ上に光が見えます。今、私は学校から地球の半径が海面で6371 Kmであるべきだと覚えているだけです。そして、私はカヌーに座っているので、私の目も海面にあると仮定できます。 仕事 潮流が刻々と私を動かしているので、私の友人は時々トーチを上げています(現在は12.30メートルです)。私の友人の位置からの距離を計算するのに役立つ完全なプログラムまたは関数を書いてください! 以下に図を示します(縮尺どおりではありません)。 ラベルの付いたオレンジ色の点Mは私、ラベルの付いた赤い点Tはトーチです。緑の線は、Mとの間の直線距離ですT 入力 標準入力からh、水平線の真上にあるトーチの高さをメートル単位で取得します。 0から100の範囲が含まれます。 出力 緑色の線のユークリッド長を1 cmの精度で返す必要があります。たとえば、メートル単位で出力する場合は、小数点以下2桁にする必要があります(少なくとも)。出力はメートルまたはキロメートルのいずれかですが、精度を尊重します。 テストケース: すべての値はメートルです。 11.5 > 12105.08 13.8 > 13260.45 ルール 最短のコードが優先されます。

1
切り替えシーケンス
イントロ スイッチングシーケンスは次のように定義されます。 n円の中に立っている人から始めます(6この例の場合)。 1 2 6 3 5 4 personから開始して1、「選択された」人の左側にある人が削除されます。 1 6 3 5 4 削除された人は、削除方法を「切り替える」ことができます。 削除された人が偶数の場合(この場合)、次の削除された人は、次の「選択された」人の右側になります。 削除された人が奇数の場合、次の削除された人は、次の「選ばれた」人の左側になります。 次に選択された人は、以前に削除された人にも依存します。 削除された人が偶数の場合、次に選択された人は前に選択された人の右側になります。 削除された人が奇妙な場合、上記を参照してください。ただし、「右」を「左」に置き換えます。 そのため、次に選択される人は6です。 今、私たちはの右にある者を削除6され、5: 1 6 3 4 ので5奇数で、削除人は左になりました。新しく選ばれた人は1です。 削除し3ます: 1 6 4 1つの番号が残るまでこのプロセスを続けます。この例では、最終的な番号は1です。だからS(6) = 1。 最初の数は次のとおりです。 n | S(n) --------- 1 | 1 2 | 1 3 | 3 4 …

2
それらの数字を短縮しましょう!今逆ですか?
前書き: 同様に、TwitterやInstagramのと他の人が、私は次のように番号を表示したい1.2Kと3.8 Mの代わりに、1,222または3,823,456。 しかし、それだけではありません!誰もが知っているように、これらの略語を間違いなく嫌い、逆にしようとする人間がいる可能性があります。だから、1.2kとなります1,200と3.8 Mなります3,800,000。 タスク: あなたの仕事は、数字のリスト(文字列として与えられる)を短縮ペアに、またはその逆に変換するプログラムまたは関数を書くことです。 たとえば、入力リスト(またはany STDIN)がの['1.4k', '1,234,567', '7.99M']場合、出力する必要があります: ['1,400', '1.2M', '7,990,000'] 略語については、次のスキーマに従うことができます。 10 3- > 1キロ-> K 10 6- > 100万-> M 10 9- > 10 億-> B コードでは、入力にすべて小文字、すべて大文字、大文字小文字の混在、または未定義の大文字小文字を想定し、これらのいずれかを出力に使用できますが、一貫性が必要です。 規則と制限: STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(出力)パラメーターを介して結果を出力するプログラムまたは関数を作成できます。 入力は、任意の便利なリスト形式または文字列形式です。がそれぞれよりも小さく、リストに少なくとも1つの要素が含まれていると仮定できます。ai231 各省略番号には1つしか 含まれません.が、通常の番号には必要な数だけが含まれ ます(この番号は変更されないと想定できます)。, として番号を入力することはできませんが、'123456'むしろ123,456 標準のコードゴルフ規則が適用されます。 テストケース: Input: ['1.5M', '77.6k', '123,456,789'] Output: ['1,500,000', '77,600', '123.4M'] Input: …
11 code-golf 

4
グリッドを操作します!
ブリーフィング あなたはボットであり、北、南、東、西の4つの方向すべてに無限に広がる2Dグリッドにいます。番号が与えられたら、ターゲット番号に到達するようにボットを移動する必要があります。 グリッドの仕組みは次のとおりです。 北、南、東、西の4つの方向に移動できます。一度セルから移動すると、そのセルに再び戻ることはできません(そのため、効果的にマップから削除されます)。 行く「カウンター」、があります1234567890(それから行くよう1に2する...すべての方法9に、その後、0戻って、その後、1あなたが移動するたびに変更し、再び)は、。 また、0から始まる「値」もあります。 いずれかの方向に移動すると、移動する方向に応じて数学的な操作が発生します。 北:カウンター(value += counter)によって値が増加します。 東:カウンター(value -= counter)によって値が減少します。 南:値にカウンター(value *= counter)が掛けられます。 西:値はカウンター(value /= counter)で除算されます。 除算は整数除算なので、5/2 -> 2です。 で割ることはできません0。 例: ボットが北に3回移動した場合: 最初の「北」の動きは、カウンターを1にインクリメントし、値(現在は1)に追加します。 2番目の「北」の動きは、カウンターを2に増分し、値(現在は3)に追加します。 3番目の「北」の動きは、カウンターを3に増分し、値(現在は6)に追加します。 最終値は6です。 北に移動し、再び南に移動します。 最初の「北」の動きは、カウンターを1にインクリメントし、値(現在は1)に追加します。 2番目の「南」移動エラーは、ボットが移動しようとしているセルが(最初の移動から)削除されるためです。 ボットがエラーになったため、最終的な値はありません。 チャレンジ あなたの課題は、ボットの最終的な値がその数値に等しくなるように、ボットが入る適切な方向を番号が与えられたときにプログラムを書くことです。 したがって、数値がの場合6、それに対する有効なソリューションは次のようになります。 nnn (ボットは3回連続して北に移動します)。 テスト値は次のとおりです。 49445094, 71259604, 78284689, 163586986, 171769219, 211267178, 222235492, 249062828, 252588742, 263068669, 265657839, …

3
2を法とするWythoff行列の特定の値を出力します
Wythoff行列は、Wythoffのゲームのチェス盤上の各正方形のグランディ数で構成される無限行列です。 このマトリックスの各エントリは、エントリの位置の上、左、または斜め北西に表示されない最小の非負数に等しくなります。 左上の20行20列の正方形は次のようになります。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 0 4 5 3 7 8 6 10 11 9 13 14 12 16 17 15 19 20 2 0 1 5 3 4 8 …

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