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

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

23
新しいファイル名を主張する
実行時に、入力を求めるキープ入力のラインユーザの入力があるまではない、現在の作業ディレクトリからの相対、既存のファイルまたはディレクトリ、または他のファイルシステム項目の名前。次に、最後に入力したファイル名を返す/印刷します。すべてのユーザー入力が有効なファイル名になると仮定することができます。 擬似コード1 myform = new form("GUI") myform.mytxt = new editfield("") myform.ok = new button("OK") repeat waitfor(myform.ok,"click") until not filesystem.exists(myform.mytxt.content) return(myform.mytxt.content) 擬似コード2 LET TEXT = "." WHILE HASFILE(TEXT) DO TEXT = PROMPT("") ENDWHILE RETURN TEXT TIOを使用しているときに再プロンプトを表示するユーザー入力の例: . .. .env.tio / /bin/[ /lost+found TIOのときに返されるユーザー入力の例: ... env.tio ../../bin/] /lost/found

5
多次元のダンス
チャレンジ 与えられたn整数の次元アレイと第一の順列n自然数、したがってアレイの寸法を並べ替えます。 詳細 この課題は、MATLABに触発されていますpermute。デモンストレーション 順列は整数のリストとして与えられます。たとえば、[1,3,2]1が1にマッピングされ、2が3にマッピングされ、3が2にマッピングされます(ここで、ithエントリは値iがマッピングされます)。ただし、サイクルや関数など、便利な他の形式を使用できます。より便利な場合は、0ベースのインデックスを使用することもできます。 配列は完全な「長方形」m1 x m2 x ... x mn配列であると想定できます(つまり、不規則/ギザギザではないと仮定できます)。 n多くの言語ではネストされた配列の次元数に制限があるため、これは大きすぎないと想定できます。 言語が多次元配列をサポートしていない場合は、配列を表す文字列を入力として使用することもできます。 例 n恒等置換[1,2,3,...,n]を持つ任意の- 次元配列は変更されません。 [[10,20,30],[40,50,60]]順列を持つ配列[2,1]はにマッピングされ[[10,40],[20,50],[30,60]]ます。 [[[1,2],[3,4]],[[5,6],[7,8]]]順列を持つ配列[2,3,1]はにマッピングされ[[[1,3],[5,7]],[[2,4],[6,8]]]ます。

21
反復バイトカウンター
あなたの仕事は、バイト数Lの空でないプログラム/関数を書くことです。これは、M回繰り返されると、与えられた正の整数NがL×Mに等しいかどうかをチェックします。 理論的には、任意の数の繰り返し(Mの任意の正の整数値)をサポートする必要がありますが、言語の制限により、特定のしきい値を超えて動作できない場合は問題ありません。プログラムのソースコードを読んだり、プログラムに関する情報にアクセスしたりすることは固く禁じられています。 出力を提供するには、状態の1つ(真実または偽)に一貫した値を選択し、他の状態に他の(必ずしも一貫性のない)可能な出力を使用する必要があります(Discussion)。 回答は、最初のプログラムの長さL(バイト単位)でスコアリングされ、バイト数は少ないほど良いです。 例 (初期)プログラムがであるとしましょうABCDE。次に: ABCDE(1回の繰り返し)入力が5に等しいかどうかを確認する必要があります。 ABCDEABCDE(2回の繰り返し)入力が10に等しいかどうかを確認する必要があります。 ABCDEABCDEABCDE(3回の繰り返し)入力が15に等しいかどうかを確認する必要があります。等... このサンプルコードのスコアは以下のようになり5初期ソースは5バイトの長さであるように、。

25
重なり合うスライスの列ごとの合計
仕事 整数のリストを考えるとLと別の整数sの目標は、すべての列単位の合計を計算することであるSの -length(潜在的にオーバーラップ)のスライスLをに対するその位置を関係する一方で、L(下記参照します)。 定義 Sの -length スライス(重複)リストのLは、すべての連続するサブシーケンス(折り返しなし)であるL長さであるS。 Lに対するスライスsの位置を特定するために、各ラダーs iが最初からi位置のオフセットを持つ「ラダー」の構築を想像できます。 スペック sは1より大きく、厳密にLの長さより小さい整数です。 Lには常に少なくとも3つの要素が含まれます。 デフォルトではこれらの抜け穴は禁止されていることに注意しながら、任意のプログラミング言語で競争し、任意の標準的な方法で入力を取得し、出力を提供できます。これはcode-golfであるため、すべての言語の最短の送信(バイト単位)が優先されます。 例とテストケース これが実際の例です: [1, 2, 3, 4, 5, 6, 7, 8, 9], 3 [1, 2, 3] [2, 3, 4] [3, 4, 5] [4, 5, 6] [5, 6, 7] [6, 7, 8] [7, 8, 9] -------------------------------- (+) | column-wise …

17
多項式の積分根を見つける
チャレンジ 課題は、入力としてn次多項式の係数を取り、方程式が成立するx の積分値を返すプログラムを作成することです。係数は、電力の減少または増加の順に入力として提供されます。すべての係数は整数であると想定できます。 入出力 入力は、累乗の降順または昇順の方程式の係数になります。方程式の次数、つまりxの最大パワーは、入力の要素の総数よりも常に1少なくなります。 例えば: [1,2,3,4,5] -> represents x^4 + 2x^3 + 3x^2 + 4x + 5 = 0 (degree = 4, as there are 5 elements) [4,0,0,3] -> represents 4x^3 + 3 = 0 (degree = 3, as there are 3+1 = 4 elements) 出力は、与えられた式を満たすxの個別の積分値のみである必要があります。すべての入力係数は整数であり、入力多項式はゼロ多項式ではありません。与えられた方程式の解がない場合、出力は未定義です。 方程式に繰り返し根がある場合、その特定の根を一度だけ表示します。値は任意の順序で出力できます。また、入力に少なくとも2つの数字が含まれると想定します。 例 [1,5,6] …

29
警官と強盗:編集された素数(警官のスレッド)
この挑戦はもともとマジックタコのUrによってサンドボックス化されました。私は彼の許可を得てそれを採用し、掲載しました。 これは警官のスレッドです。強盗のスレッドはこちらです。 チャレンジ ステップ1:primalityをチェックするコード(関数または完全なプログラム)を記述します。 ステップ2:文字を記号に置き換えて、コードの一部を削除します█。 ステップ3:編集したコードを警官のスレッドに投稿します。 ステップ4:コードがクラックされるのを待ち、他のコードをクラックしようとします。 たとえば、Groovyコード{it.isPrime()}はになり{██.is█████()}ます。(これはばかげて簡単にクラックできます。また、.isPrime()Groovyの方法ではありません。) 得点 提出にはプログラムのスコアを含める必要があります。スコアは、編集された文字と文字の比率として定義されます。したがって、プログラムに20文字が含まれ、5文字が編集された場合、スコアは0.25になります。上記のGroovyコードのスコアは0.5です。 ルール プログラムは正の整数のみを処理する必要があります。数値が素数の場合は真理値を出力し、それ以外の場合は偽値を出力する必要があります。何を出力するかを回答で指定してください。 コードにコメントや不要な空白を含めることはできません。 ハッシュ化または暗号化の難読化はありません。 コードは50%を超えて編集することはできません(少なくとも1/2文字を表示する必要があります)。これは、可能な最高のスコアが0.5であることを意味します。 回答が1週間以内にクラックされない場合は、安全とマークし、意図したクラックで編集できます。 勝ち 勝者は、投稿から2週間以内に、スコアの最も低い無回答の回答となります。同点の場合、最も票数の多い方が勝者となります。このスレッドは常により多くの提出に対して開かれていますが、2週間後に選ばれた勝者は永続的です。

30
日付乗算チャレンジ
(FiveThirtyEight.comの先週のRiddlerに触発されました。サンドボックスの投稿。) 2001年から2099年までの年を指定して、その暦年の日数を計算して返しますmm * dd = yy(ここyyで、2桁の年)。 たとえば、2018には5があります。 1月18日(1 * 18 = 18) 2月9日(2 * 9 = 18) 3月6日(3 * 6 = 18) 6月3日(6 * 3 = 18) 9月2日(9 * 2 = 18) 入力は、2桁または4桁の年です。 出力は整数でなければなりません。オプションの後続スペースまたはリターンは問題ありません。 完全な入出力リスト: Input = Output 2001 = 1 2021 = 3 2041 = 0 2061 = 0 …
19 code-golf  date 

7
えっと、俳句ですか?
したがって、俳句を作成したいのですが、俳句の音節規則に従っているかどうかはわかりません。 私はいつものように適切な宣伝文句を書くことを気にすることができなかったので、あなたはこれで間に合わせる必要があります。すぐに立ち往生しましょう。 野生で俳句を見つける この挑戦のために、与えられた詩がこれらの基準を満たしているかどうかを確認します。 3行あります。 最初の行には5つの音節があります。 2行目には7つの音節があります。 3行目には5つの音節があります。 各行は、スペースのグループで区切られた1つ以上の単語で構成されます。これらの単語は必ずしも有効な英語の単語ではありません。 各単語は音節に分割され、それらの音節がカウントされて行の総音節カウントが取得されます。 音節には、2つまたは3つの部分があります。開始、終了、および場合によっては中間です。各部分は、子音のグループ(s、skまたはなどの子音クラスターとも呼ばれるspl)または母音のグループ(i、eaまたはなどoui)のいずれかです。 始まりが子音のグループである場合、真ん中は母音のグループになり、終わりは子音のグループになります。始まりが母音のグループである場合、終わりは子音のグループであり、中間はありません。 例えば、ワードはexample、3つの音節で構成されex、amそしてple。ple単語の終わりまでに短縮されたため、終わりはありません。 別の例として、単語はsyllableまた、3つの音節を有しsyll、ablそしてe、また、全く結末を持ちません。 最後の例として、単語にwordは1つの音節がありword、子音のグループで終わります。 チャレンジ 文字列、文字列のリスト、リストのリスト、または少なくとも1行の詩を表すその他の妥当な形式が与えられた場合、上記の俳句の基準を満たしているかどうかを判断し、結果を返します。 次の形式のいずれかで結果を返すことができます。 詩が俳句である場合は真実の値、そうでない場合は偽の値。 詩が俳句の場合は偽の値、それ以外の場合は真実の値。 詩が俳句である場合に提出で指定された値の有限範囲からの値、および提出で指定された相互に排他的な値の範囲からの値。 また、詩にアルファベット以外の文字が含まれていないと仮定することもできますが、完全に大文字または小文字であると仮定することはできません。 この課題のためにY、母音です。 テストケース 真実の This is a haiku Yes it truly is one See what I did man I am so tired of writing this already when can I …

1
フォームバスレター
あなたの家に小さな子供がいる場合、泡風呂の手紙に出くわしたかもしれません。これらを湿らせて、タイルやお風呂の側面などの平らな面に貼り付けて、言葉やメッセージを作成できます。 ただし、大文字と小文字のA〜Z、および数字0〜9の36文字しか取得できないため、単語とメッセージの範囲は1セットのみの場合、ある程度制限されますABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。ただし、いくつかの文字や数字をcして悪用して、他の文字の余分なコピーを作成することができます。 3: E 1: I 7: L (when rotated) M: W (when rotated) 0: O 2: S (when flipped) 5: S W: M (when rotated) 2: Z 5: Z (when flipped) O: 0 6: 9 (when rotated) L: 7 (when rotated) 9: 6 (when rotated) これらはすべて双方向ではないことに注意してください。数字の一部としての文字よりも単語の一部として数字を読みやすい傾向があるためです。 各セットにはさまざまな色があり、各文字は順番に色付けされます。たとえば、セットに赤、黄、青の3色がある場合、セットは次のようになります。 赤: ADGJMPSVY147 …

14
シャッフルですか?
昨日、リフルシャッフルについてこの質問をしました。昨日の質問は少し難しすぎたようですので、この質問は関連しているものの、はるかに簡単なタスクです。 今日、あなたは順列が実際にリフルシャッフルであるかどうかを判断するように求められます。リフルシャッフルの定義は、最後の質問から変更されています。 シャッフルの最初の部分は分割です。分割では、カードのデッキを2つに分割します。2つのサブセクションは連続的で、相互に排他的かつ網羅的でなければなりません。現実の世界では、パーティションをできるだけ均等にしたいと考えていますが、この課題ではこれは考慮事項ではありません。縮退している(1つのパーティションが空である)パーティションを含むすべてのパーティションは等しく考慮されます。 それらが分割された後、カードは、それらがメンバーであるパー​​ティション内で相対的な順序を維持するような方法で一緒に接続されます。たとえば、カードAがデッキのカードBの前にあり、カードAとBが同じパーティションにある場合、カードAが最終結果のカードBの前にある必要があります。場合はAとBが異なるパーティションにある、彼らは最終的な結果に関係なく、自分の順番の、任意の順序にすることができます。 各リフルシャッフルは、カードの元のデッキの順列として見ることができます。たとえば、順列 1,2,3 -> 1,3,2 リフルシャッフルです。このようにデッキを分割すると 1, 2 | 3 のすべてのカード1,3,2は、パーティション内の他のすべてのカードと同じ相対的な順序を持っていることがわかります。 2まだ後1です。 一方、次の順列はリフルシャッフルではありません。 1,2,3 -> 3,2,1 これは、2つの(重要な)パーティションすべてに対して 1, 2 | 3 1 | 2, 3 相対的な順序を維持しないカードのペアがあります。最初のパーティション1で2順序を変更し、2番目のパーティション2で3順序を変更します。 仕事 合理的な方法で順列が与えられた場合、それが有効なリフルシャッフルを表すかどうかを判断します。「はい、これはリフルシャッフルです」と「いいえ、これはリフルシャッフルではありません」の2つの異なる定数値を出力する必要があります。 これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数が少ない方が優れています。 テストケース 1,3,2 -> True 3,2,1 -> False 3,1,2,4 -> True 2,3,4,1 -> True 4,3,2,1 -> False 1,2,3,4,5 -> …

2
有理数のビットごとのXOR
前書き 0から1までのすべての有理数は、最終的に周期的なビットシーケンスとして表すことができます。たとえば、11/40のバイナリ表現は 0.010 0011 0011 0011 ... ここで、0011部品は無期限に繰り返されます。この表現を見つける1つの方法は次のとおりです。r = 11/40で開始し、それを繰り返し2倍して小数部分を取得し、1を超えたときに記録します。rの値が繰り返されると、ループに入ったことを確認できます。 1. r = 11/40 2. 2*r = 11/20 < 1 -> next bit is 0, r = 11/20 3. 2*r = 11/10 >= 1 -> next bit is 1, r = 2*r - 1 = 1/10 4. 2*r = 1/5 …

9
リーマン和を使用した近似定積分
左右のリーマン和は定積分の近似です。もちろん、数学では非常に正確である必要があるため、無限に近づくいくつかの細分化で計算することを目指していますが、この課題の目的には必要ありません。代わりに、入力を取り、のいずれかを介して出力を提供し、最短プログラムを書くしようとする必要があり、デフォルトの方法いずれかで、プログラミング言語、次の処理を行い、: 仕事 2つの有理数および(定積分の限界)、正の整数、左/右を表すブール値およびブラックボックス関数与え、の左または右のリーマン和(依存)を計算します、等しいサブディビジョンを使用します。aaabbbnnnkkkF K ∫ B、F (X )D X N fffkkk∫baf(x )d x∫abf(x)dx\int_a^b f(x)\mathrm{d}xnnn I / O仕様 aaaおよびは、有理数/浮動小数点数または小数にすることができます。 bbb kkkは2つの異なる一貫した値で表すことができますが、入力として完全または部分的な関数を使用することは許可されていないことに注意してください。 fffはブラックボックス関数です。上記のメタ回答を引用すると、ブラックボックス関数のコンテンツ(コードなど)にアクセスできず、それらを呼び出し(該当する場合は引数を渡す)、出力を観察することしかできません。必要に応じて、提出をテストできるように、言語で使用する構文に関する必要な情報を含めてください。 出力として、要求されたリーマン和を表す有理数/浮動小数点数/分数を提供する必要があります。過去に検討し、浮動小数点の不正確さがある限り1000分の1の最も近い倍数に丸めたときに、あなたの出力は、少なくとも3桁まで正確であると(例えば、無視することができる1.4529999のではなく、結構です1.453)。 数学仕様 fffはと間で連続することが保証されています(ジャンプ、穴、垂直漸近線はありません)。aaabbb 対処しなければならない3つのケースがあります:(結果はまたは同等のもの)、またはです。a = ba=ba = b000a &lt; ba&lt;ba < ba &gt; ba&gt;ba > b 場合、積分はその符号を変えます。また、この場合の積分の正しい意味はに向かっます。b &lt; ab&lt;ab < aaaa グラフの下の領域は負で、グラフの上の領域は正です。 例/テストケース 私はそれらを少し縮小しなければならなかったので、解像度は最適ではありませんが、それらはまだ読みやすいです。 f(x )= 2 x + …

19
三角法プログラムを有効にする
Triangularityは、Xcoder氏によって開発された新しいエソランであり、コード構造は非常に具体的なパターンに従う必要があります。 nコードのth行について2n-1は、プログラムの正確な文字がその上になければなりません。これにより、最初の行は1文字のみで、残りは2ずつ増加する三角形/ピラミッドの形状になります。 各行の.左右にsを埋め込み、文字が行の中央に配置され、すべての行が同じ長さで埋め込まれるようにする必要があります。lがプログラムの行数として定義されている場合、プログラムの各行の長さは2 * l - 1 たとえば、左側のプログラムは有効ですが、右側のプログラムは無効です。 Valid | Invalid | ...A... | ABCDE ..BCD.. | FGH .EFGHI. | IJKLMN JKLMNOP | OPQRS 有効な構造にレイアウトすると、名前が明らかになります。 仕事 あなたの仕事は、三角コードを表す単一行の文字列を入力として受け取り、それを上記のように有効なコードに変換して出力することです。 I / Oの仕様: 入力には、範囲内の文字のみが含まれます 0x20 - 0x7e 入力の長さは常に二乗数であるため、うまくパディング可能です。 出力パディングには、他のものではなくドットを使用する必要があります。 受け入れ可能な任意の方法で入力および出力できます。これはコードゴルフなので、バイト単位の最短コードが勝ちです! テストケース input ---- output g ---- g PcSa ---- .P. cSa DfJ0vCq7G ---- …
19 code-golf  string  code-golf  combinatorics  code-golf  math  number  code-golf  matrix  code-golf  string  decision-problem  code-golf  internet  code-golf  number  number-theory  integer  expression-building  code-challenge  primes  cops-and-robbers  obfuscation  code-challenge  primes  cops-and-robbers  obfuscation  code-golf  string  balanced-string  code-golf  quine  code-generation  code-golf  matrix  code-golf  tips  c#  code-golf  ascii-art  code-golf  ascii-art  source-layout  code-golf  quine  source-layout  popularity-contest  language-design  code-golf  array-manipulation  subsequence  code-golf  matrix  math  code-challenge  game  graph-theory  atomic-code-golf  code-golf  number  integer  polynomials  equation  code-golf  array-manipulation  sorting 

16
ミラーリングされたデジタル時計
多くのデジタル時計は、オンまたはオフの7つの異なるライトのみで構成される簡略化された数字を使用して時間を表示します。 水平にミラーリングされている場合、数字018は対称であるため変更されません。また、数字2とは5、スワップ取得2になって5、またはその逆。他のすべての数字は、ミラーリングされると無効になります。 したがって、24時間のデジタル時計が与えられると、デジタル表示の鏡像も有効な時計の読み取り値になるように、多くの時計の読み取り値があります。あなたの仕事は、そのようなすべてのクロック測定値をミラー測定値とともに出力することです。 たとえば、に22:21なり15:55、に00:15なり21:00ます。一方、12:34または16:27ミラーリングされた場合34679は無効になります(数字は無効になります)。また、どちらも22:22また18:21はです。これは、1日は24時間、1時間は60分であるため、正気の時計は表示され55:55ないため12:81です。 仕事 以下に示すように、入力を受け取らず、すべての有効なペアを昇順で出力するプログラムまたは関数を作成します。 00:00 - 00:00 00:01 - 10:00 00:05 - 20:00 00:10 - 01:00 00:11 - 11:00 00:15 - 21:00 00:20 - 05:00 00:21 - 15:00 00:50 - 02:00 00:51 - 12:00 00:55 - 22:00 01:00 - 00:10 01:01 - 10:10 01:05 - 20:10 01:10 - …

10
世界を破壊するには何が必要ですか?
惑星の重力結合エネルギーとは、惑星のあらゆる小さな断片を分離するために必要なエネルギーの量であり、その結果、どの断片も他の断片を周回したり衝突したりしません。均一な球体の場合、Wikipediaは次の式を提供します。 E= 3 G M25 RE=3GM25RE = \frac{3GM^2}{5R} ここで、Gは重力定数(6.672e-11 m 3 •kg -1 •s -2)、Mは質量、Rは半径です。 ジュール(kg•m 2 •s -2)でこれを計算するだけで、この挑戦をすることはできますが、それは退屈です。また、誰もがジュールを理解しているわけではありません。 代わりに、次の単位に変換しましょう。 TNTのキロトン(4.184兆ジュール、略記kilotons) 広島の核兵器(62.76兆ジュール、略記nukes) Hostess™Twinkies(560,000ジュール、略記twinkies) キロワット時(正確に360万ジュール、略記kWh) 質量エネルギーのキログラム(1 kg質量エネルギー= 299,792,458 2ジュール、略記kg) したがって、次の入力を受け入れます。 キログラム単位の質量 メートル単位の半径 使用するユニットを表す6つの異なる入力の1つ そして、指定された単位で結合エネルギーを出力します。略記単位を出力の最後に追加します。 ルール ジュールの短縮形はJです。 略記単位または数字を分割しない限り、任意の空白を使用できます。 あなたの言語が使用するどんな形式の科学的表記も許可されます。 必要なのは4つの有効数字だけです。浮動小数点を強くお勧めします。 なんとかバイトでの最短回答。 テストケース このスプレッドシートで生成されます。 Mass (kg) Radius (m) J kilotons nukes twinkies kWh …

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