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

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

13
三項演算子の式を評価する
アルファベット上文法を考える{ 0、 1、 ?、 :}によって定義されるプロダクションルール S→ 0┃ 1┃ 0 ?秒:秒┃ 1 ?秒:秒 sから生成された文字列が与えられると、それを?:右結合式(たとえば、a?B?X:Y:c?d:e?f:gmeans a?(B?X:Y):(c?d:(e?f:g)))の式として解析し、次のセマンティクスで評価します。 eval(0) = 0 eval(1) = 1 eval(0?a:b) = eval(b) eval(1?a:b) = eval(a) 結果が0の場合、固定値を出力します。出力が1の場合、異なる固定値を出力します。回答で選択した出力値(0/ / 1またはFalse/ True)を指定します。 テストケース 0 -> 0 1 -> 1 0?0:1 -> 1 0?1:0 -> 0 1?0:1 -> 0 1?1:0 -> 1 0?1?0:1:1 …
29 code-golf  syntax 

8
ハノイの塔ソリューションを検証する
ハノイの塔が何であるかわからない場合は、簡単に説明します。3本のロッドと、サイズの異なるディスクがいくつかあります。最初は、すべてのディスクが最初のタワーに並べられています。最大のものは一番下にあり、一番小さいものは一番上にあります。目標は、すべてのディスクを3番目のロッドに持ち込むことです。簡単に聞こえますか?キャッチは次のとおりです。他のディスクより小さいディスクの上にディスクを配置することはできません。一度に1枚のディスクを手に持って別のロッドに移動することができ、ディスクをロッドに置くことはできますが、テーブルではなく、卑劣な野郎です。 asciiのサンプルソリューション: A B C | | | _|_ | | __|__ | | A B C | | | | | | __|__ _|_ | A B C | | | | | | | _|_ __|__ A B C | | | | | _|_ | | __|__ …
29 code-golf  stack 

30
テキストの正方形
チャレンジ 文字列を指定すると、テキストを正方形の形状で出力します。 テキストは常に正方形に収まり、空の文字列になることはないと想定できます。 また、改行がないことも想定できます。 例 Input: Hi, world Output: Hi, wo rld テストケース Input: Hi, world! Hello Output: Hi, worl d! H ello Input: Lorem ipsum dolor sit amt Output: Lorem ipsu m dol or si t amt Input: H Output: H ルール これはcode-golfなので、バイト単位の最短回答が勝ちです!タイブレーカーは最も支持された答えです。 標準的な抜け穴は禁止されています。
29 code-golf  string  grid 

30
それは奇妙な言葉ですか?
チャレンジ 単一の単語を入力として、単語が奇数か偶数かを判断します。 奇数と偶数の言葉 一般的なルールを仮定します: odd + odd = even even + odd = odd odd + even = odd even + even = even アルファベットでは、奇数文字は次のとおりです。 aeiou そして、偶数文字は次のとおりです。 bcdfghjklmnpqrstvwxyz 同じことは大文字にも当てはまります(AEIOU奇数とBCDFGHJKLMNPQRSTVWXYZ偶数)。 次に、単語内の各文字を「追加」します。たとえば、単語catsは次と同等です。 even + odd + even + even 単純化するもの: odd + even これにより、さらに簡素化されます。 odd だから言葉catsは奇妙です。 例 Input: trees Output: even Input: …

16
平方根を単純化する
正の整数nを指定すると、すべての平方因子を抽出√nすることa√bにより平方根を形式に単純化します。出力されたa,bとの正の整数でなければなりませんn = a^2 * bでbできる限り小さく。 あなたは、出力してもよいaし、b任意の合理的な形式のいずれかの順序で。の出力を1暗黙的に省略できません。 n=1..36as の出力(a,b): 1 (1, 1) 2 (1, 2) 3 (1, 3) 4 (2, 1) 5 (1, 5) 6 (1, 6) 7 (1, 7) 8 (2, 2) 9 (3, 1) 10 (1, 10) 11 (1, 11) 12 (2, 3) 13 (1, 13) 14 (1, 14) …

30
偽のローダーにしてください
このように偽のローダーを作成します。 パラメーター : loadingこれらのいずれかを周期的に表示する(スペース)-\|/(スペース)(0から100のパーセンテージカウンター)%。 パーセンテージカウンターは、表示が変わるたびに1ずつ増加することになっています。 カウンターが次の反復にジャンプするのにかかる時間はランダムです。関数/メソッドが、1<= ms <=750ここmsでミリ秒単位の時間の範囲で確率が0を超えるすべてのランダムな整数を生成できる限り、任意の種類のランダムが実行されます。 開始時にloading - 0 %。 終了時にloading - 100 %。 入力は不要です。 完全なプログラムまたは機能、または同様のものを提出してください。 私が使用したコード: C ++ #include<stdio.h> #include<time.h> #include<windows.h> int main() { srand(time(NULL)); char a[15],b[]="-\\|/"; int i=0,j=0,ms; while(j<101) { (i<3)?i++:i=0; wsprintf(a,"loading %c %d ",b[i],j++); printf(a);puts("%"); //This part is to make the output look cool switch(rand()%9) …

3
ダンクミームジェネレーター
私は自分の画像からくすんだミームを作るのが好きです。しかし、いわゆる「クイックミーム」サイトはすべて、コードが多すぎます。一番辛いミームジェネレーターを作成する唯一の方法は、PPCGのスタッフにゴルフをお願いすることだと気づきました。それで、あなたがしなければならないことの低さをお教えしましょう。 スペック ミームを作成するために、ファイル名、画像オブジェクトなどとして画像を入力として使用します。 次に、上部テキストと下部テキストに2つの文字列を使用します(改行なし)。 5pxの黒のアウトラインでサイズ22pt Impactの白いフォントで画像上のテキストをレンダリングします(Impactがインストールされていると想定できます。 テキストは水平方向の中央に配置する必要があります。 テキストが水平方向に収まると仮定できます。 それぞれのテキストは、上から10ピクセル、下から8ピクセルにする必要があります。 次に、ファイルに保存する、表示するなどして画像を出力します。 これはcode-golfなので、バイト単位の最短コードが勝ちです! ハッピーミーム!

2
楕円曲線の追加
楕円曲線の追加 免責事項:これは、楕円曲線の豊富なトピックに関する正義を行いません。かなり簡素化されています。楕円曲線は最近、暗号化のコンテキストで多くのメディアの注目を集めたため、楕円曲線の「計算」が実際にどのように機能するかについて、いくつかの小さな洞察を提供したかったのです。 前書き 楕円曲線は(x,y)、フォームの平面内の点の集合ですy^2 = x^3+Ax+B。(さらに、4A^3+27B^2 ≠ 0厄介な特異点を避けるために。)これらの曲線はどのフィールドでも考慮することができます。実数のフィールドを使用すると、曲線を視覚化でき、次のようになります。 ソース これらの曲線の特別な点は、加算に類似した算術演算が組み込まれていることです。ポイントを追加および削除することができ、この操作は結合的および可換的(アーベル群)です。 追加はどのように機能しますか? 注:楕円曲線上の点の追加は直感的ではありません。この種類の追加は、特定の優れたプロパティがあるため、そのまま定義されています。奇妙ですが、動作します。 楕円曲線はグループを形成するため、0に相当する付加的な同一性があり0ます。つまり、任意のポイントに追加しても結果は変わりません。この付加的なアイデンティティは、無限の「ポイント」です。平面上のすべての線にはこの点が無限遠に含まれるため、追加しても違いはありません。 与えられた線が3点で曲線と交差すると仮定します0。これはである可能性があり、これら3点の合計は0です。それを念頭に置いて、この画像を見てください。 ソース さて、自然な質問は、何P+Qですか?まあ、if P+Q+R = 0、then P+Q = -R(またはとして書かれていますR')。どこ-Rですか?ここでR + (-R) = 0、はからX軸の反対側にあるRため、それらを通る線は、、、およびのみRと交差-Rし0ます。この画像の最初の部分でこれを見ることができます: ソース これらの画像で確認できるもう1つの点は、ポイントとそれ自体の合計が、線が曲線に接していることを意味していることです。 直線と楕円曲線の交点を見つける方法 2つの異なるポイントの場合 一般に2点を通る正確に1本の線がありP=(x0,y0), Q=(x1,y1)ます。それが垂直ではなく、2つのポイントが明確であると仮定すると、と書くことができますy = m*x+q。楕円曲線との交点を見つけたいとき、次のように書くことができます。 0 = x^3+Ax+B-y^2 = x^3+Ax+B-(m*x+q)^2 これは3次多項式です。これらは一般的に解くのはそれほど簡単ではありませんが、この多項式の2つのゼロを既に知っています。追加したい2点の2つのx座標x0, x1! このように我々の線形因子アウト因子(x-x0)と(x-x1)、そのルートである第三の線形因子が残されているx点の-座標R。(-R。あまりにも対称性のためであればその注意してくださいR = (x2,y2)、その後を-R = (x2,-y2)。-グループからであり、それはベクトルマイナスではありません。) P自身に1つのポイントを追加する場合 この場合、で曲線の正接を計算する必要がありますP=(x0,y0)。私たちは、直接書き込むことができますmとqの観点A,B,x0,y0: 3*x0^2 + …

3
箱に詰め物をする
あなたの仕事は、与えられた長方形を素数で埋めることができるプログラムまたは関数を書くことです。矩形の入力となります。出力は、数字とスペースで構成される文字列のリストである必要があります。長さ2以上の各水平(左から右)および垂直(上から下)の数字列(スペースまたは長方形の境界で区切られる)は、素数でなければなりません。各素数は1回だけ使用できます。先行ゼロは許可されません。出力の末尾の改行はオプションです。widthheightheightwidth 例: With input (5, 3) a valid output would be: 11 13 7 0 173 which scores 11, 13, 173, 17, 103 for a total of 5 points. スコア: スコアリングの長方形サイズはになります80, 60。長方形内の長さ2以上の水平または垂直の素数はそれぞれ1ポイントを獲得します。最もポイントの多い答えが勝ちです。同点の場合、最も早い回答が勝ちます。 ルール: 標準的な抜け穴は禁止されています。 プログラムは80, 60サイズに合わせて設計してはいけません。回答がこのサイズに最適化されていると思われる場合、長方形のサイズを最大に変更する権利を留保し100, 100ます。 使用される素数は実際の素数である必要があります(確率的または擬似素数ではありません)。プログラムは、実行時に数値を計算またはチェックするか、ハードコーディングすることがあります。素数を見つける方法は、課題の重要な部分ではありません。 回答には、出力テキストとコードを含める必要があります。プログラムが大きすぎる場合は、コアアルゴリズムコードを少し説明するだけで含めることができます。 編集:本当の素数が必要であることを明確にした。最大長方形サイズを追加しました。 編集2:投稿する必要があるコードを明確にしました。

24
グリッド内の長方形の数
さて、この課題は大きな成功であることが判明しましたが、解決するのは非常に簡単であることが判明しました。したがって、より多くの課題を探している人のために、この課題の続編を作成しました。この課題では、一意の長方形の数を数える必要があります。見てみな! さて、この課題を解決したいとお考えの方のために、ここにきました。 さて、まだこのような挑戦はまだありませんので、ここに行きます。 この3 x 3長方形のグリッドを考えてみましょう: 長方形はいくつありますか?視覚的に数えると、実際に36は、プレーン全体を含む長方形があり、それらはすべて以下のアニメーションGIFに表示されています。 タスク 上記の長方形のカウントがタスクです。換言すれば、2つのより大きいか等しい整数で与えられ0、mおよびn、m幅を表し、およびn表し、高さ表す場合、長方形のm x nグリッド内の長方形の総数を出力します。 ルール この問題を直接解決するビルトインの使用は明示的に禁止されています。 この課題は、最短の答えを見つけることではなく、すべての言語で最短の答えを見つけることです。したがって、回答は受け付けられません。 標準的な抜け穴は禁止されています。 テストケース 次の形式で提示されますArray of Integers Input -> Integer Output。 [0,0] -> 0 [1,1] -> 1 [3,3] -> 36 (Visualized above) [4,4] -> 100 [6,7] -> 588 参照資料 http://oeis.org/A096948 これはcode-golfであるため、最短のコードが勝つことを忘れないでください!
29 code-golf  math 

10
サンタの決断
サンタの決定: このチャレンジでは、サンタクロースがリストの誰かがいたずらか素敵かを判断し、続いてcoalまたはを取得するのを手伝いますtoys。 しかし残念ながら、サンタは、彼のエントリの一部では、未組織でnaughty、nice そしてnameフィールドが間違った順序です。 入力 入力は、次の互換性のある形式で提供されます。 人の名前(コロンを含めることはできません、のみa-zA-Z0-9) 単語のnaughty直後にコロンと、サンタがあなたをいたずらさせた回数を表す負でない整数が続きます 単語のnice直後にコロンが続き、サンタがあなたを素敵に捕まえた回数を表す負でない整数 すべては、それぞれの間に単一の空白(ASCII 32)で区切られています。 さらに、名前の名前の部分の間に空白はありませんSanta Claus-> SantaClaus。 ボーナス: (25%):彼はサンタクロースなので、リストを2回チェックし、重複がないことを確認する必要があります。(その場合、ユーザーが持っている最初のスコアを取得するだけです) 例: Quill naughty:4 nice:0 naughty:0 Doorknob nice:3 naughty:2 Quill nice:6 nice:3 balpha naughty:3 pops nice:4 naughty:2 出力: 出力は次のもので構成される必要があります。 人の名前に続いて: にさらにポイントがnaughtyある場合coal: にさらにポイントがあるnice場合、toys。 しかし、naughtyとniceが等しい場合、needs more data 出力例: 組織ボーナスと重複削除ボーナスの場合: Quill coal Doorknob toys balpha needs more data …

28
超対数を計算する
これは簡単な課題です。 数を考えるとn >= 0、出力超対数(またはログ*、ログスターを、または対数を繰り返し、同等であるため、nこのような課題に対して負になることはありません。)のn。 これは、テトラションに対する2つの逆関数の1つです。もう1つはスーパールートです。これは関連する質問です。 例 Input Output 0 0 1 0 2 1 3 2 4 2 ... 15 2 16 3 ... 3814279 3 3814280 4 ルール 可能ですが、小数をサポートする必要はありません。 少なくともの入力をサポートする必要があり3814280 = ceiling(e^e^e)ます。 のような値をハードコーディングすることはできません3814280。(あなたのプログラムは理論的にはより大きな数値をサポートしなければなりません。)アルゴリズムを実装したいです。 最短のコードが優先されます。 関連OEIS
29 code-golf  math  code-golf  array-manipulation  sorting  code-golf  math  arithmetic  matrix  code-golf  string  kolmogorov-complexity  code-golf  string  code-golf  math  sequence  arithmetic  recursion  code-golf  math  ascii-art  sequence  code-golf  math  array-manipulation  code-golf  code-golf  kolmogorov-complexity  code-golf  string  code-golf  string  decision-problem  code-golf  array-manipulation  tips  javascript  json  code-golf  math  string  number  number-theory  code-golf  math  sequence  fibonacci  number  arithmetic  fastest-code  integer  code-golf  math  sequence  code-golf  string  file-system  tips  golfscript  code-golf  string  code-golf  string  natural-language  code-golf  string  file-system  code-golf  math  array-manipulation  code-challenge  image-processing  compression  code-golf  math  number  sequence  code-golf  math  combinatorics  regular-expression  code-golf  sequence  pi  code-golf  ascii-art  code-golf  string  array-manipulation  sorting  code-golf  string  graph-theory  code-golf  string  code-golf  string  ascii-art  code-challenge  compression  code-golf  code-golf  math  sequence  number-theory  code-golf  maze  graph-theory  code-golf  math  sequence 

15
文字列を切り取ります
文字列のスライスのリストの入力を指定すると、元の文字列が出力されます。 各スライスは、長さ2のリストとして与えられます。これには、スライスの開始位置(整数≥0)とスライス自体が含まれます。ご使用の言語が任意の型の配列をサポートしていない場合、これを構造体または類似物、または単に数字、スペース、そしてスライスからなる文字列としてとることもできます。 各スライスの2つの要素の順序はユーザー次第です。さらに、スライスの表現を長さ2の配列として使用することを選択した場合、2次元配列または単一のフラット配列として入力を受け取ることができます。最後に、位置を表す整数は、インデックスがゼロまたは1のいずれかです(ここでの例はすべてインデックスがゼロです)。 入力は常に、指定された最高位置まで文字列全体を決定するのに十分です。つまり、「穴」や「ギャップ」はありません。したがって、出力には余分な末尾または先頭の文字を含めることはできません(通常のオプションの末尾の改行以外)。入力は常に一貫しており、スライスが互いに競合することはありません。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 テストケース: In Out ----------------------------------------------------------- [[2, "CG"], [0, "PP"], [1, "PC"]] | PPCG [[0, "foobarbaz"]] | foobarbaz [[0, "foobar"], [6, "baz"]] | foobarbaz [[2, "ob"], [5, "rba"], [0, "fooba"], [8, "z"]] | foobarbaz [[0, "fo"], [0, "fooba"], [0, "foobarbaz"]] | foobarbaz
29 code-golf  string 

3
整数の複雑さ
あなたの仕事は、入力nで、1からnまでの各数値の最小式を順番に出力するプログラムを書くことです。バイト単位の最短プログラムが優先されます。 最小の式は、1を加算および乗算と組み合わせて、可能な限り少ない1を使用して、指定された数になります。たとえば、23は23=((1+1+1)(1+1)+1)(1+1+1)+1+111のように表現されますが、これは最小限です。 要件: プログラムは、入力として正の自然数nを取る必要があります。 出力は次の形式である必要があります。 20 = ((1+1+1)(1+1+1)+1)(1+1) 出力には、などの不要な括弧がない場合があります8 = ((1+1)(1+1))(1+1)。 乗算記号*はオプションです。 スペースはオプションです。 与えられた値に対して可能なすべての方程式を出力する必要はありません。たとえば、出力する4=1+1+1+1か、選択するかを選択できます4=(1+1)(1+1)。両方を出力する必要はありません。 各言語の最短プログラム(バイト単位)が優先されます。 1 = 1 2 = 1 + 1 3 = 1 + 1 + 1 4 = 1 + 1 + 1 + 1 5 = 1 + 1 + 1 + 1 + 1 …

14
パワートレインを見つけてください!
勝者(かなり明らか)は、10バイトでJellyを使用したDennis♦です! この挑戦はまだここにありますが、結果はもう取られません。 数字のパワートレインは、ジョンコンウェイのコンセプトです(ジョンコンウェイは、コンウェイのゲームオブライフを作ることでも有名ですが、それはポイントではありません)。次のように定義されます。 任意の数... について、その数のパワートレインは...です(つまり、左から右に2桁ごとにその前の桁の累乗です)。このプロセスは、結果が1桁になるまで繰り返されます。 例: 2592 => (2^5)(9^2) = 2592 <= Cannot be further decomposed 135 => (1^3)5 = 5 1234 => (1^2)(3^4) = 81 => (8^1) = 8 1100 => (1^1)(0^0) = 1 # (0^0) = 1 -42 => -42 # Negative numbers output the input あなたの課題は、n入力内の任意の数に対して、出力としてpowertrain(n)(つまりn、パワートレインの分解が終了した後に)戻ることです。 これはコードゴルフなので、最短のバイト数が勝ちます。 …
29 code-golf  math 

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