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

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

9
微分計算で助けて!
私はプログラミングが大好きで、すべての言語を知っていますが、数学が苦手です。残念ながら、私の学校では、コンピューターの生徒が1年間の微積分をとる必要があります。来週テストがありますが、デリバティブの公式はわかりません! 数式を見つけてください。チートシートが必要です- 4*x^3-2入力として式(など)を受け取り、導関数を出力するプログラム(教師が気付かないように可能な限り短くする)。(とにかく頭の中ですべての計算をしているので、入力と出力がコマンドライン引数、STDIN、STDOUTなどを使用するかどうかは気にしません。) このテストは、次のタイプの機能を対象としています。 -3またはのような定数8.5 x^0.5またはのようなべき関数x^-7 0.5^xまたはなどの指数関数7^x(底は常に正です) 3*x^5またはのような関数で乗算された定数-0.1*0.3^x 以下のような複数の関数の合計と差 -5*x^2+10-3^x 上記のように、先生はいつも同じように質問をフォーマットします。彼はまた、分数、piやeのような数字、または本当に大きな数字(1,000を超える)も使用していません。彼は括弧を使用せず、常にアスタリスク(*)を使用して乗算を示します。使用される変数は常にxのみです。 一方、私の先生は答えにかなり寛大です。答えが何を言っているのかが明確である限り、それらをまったく単純化したり、上記のように正確にフォーマットしたりする必要はありません。 任意の言語を使用できますが、派生物を自分で理解できないことを忘れないでください。そのため、プログラムが組み込み関数を使用して方程式を処理したり、導関数を計算したりする場合、それを使用することはできません。 テスト中、チートシートにあるプログラムやインターネット以外のファイルにはアクセスできません。 注:このシナリオは完全に架空のものです。実際の生活では、不正行為や他人の不正行為を支援することは間違っており、決して実行すべきではありません。

16
側面図からサイコロの値を決定する
ダイスの左と右の値を整数(1〜6)として取り、値を先頭に返すプログラムまたは関数を作成します。 サイコロのレイアウト: +---+ | 1 | +---+---+---+---+ | 2 | 3 | 5 | 4 | +---+---+---+---+ | 6 | +---+ ,^. <´ 5 `> <-- Top value |`._,´| .6 | 4, <-- Side values `.|,´ 入力する6 4と戻り5ます。 順序が重要です: 2 3 -> 1 3 2 -> 6 プログラムは無効な入力値を扱う必要はありません。 明白なアプローチ(すべての組み合わせでテーブルを使用)を思いとどまらせるために、組み込みのテキストエンコーディングまたは圧縮解除ルーチン、ベースエンコーディング、またはサイズを縮小するようなものを使用することは許可されません。テーブルを使用することは引き続き許可されており、独自の解凍もローリングが許可されていることに注意してください。 参考のために、ここにすべての組み合わせの表を示します(つまり、すべての可能な入力と出力)。 …
52 code-golf 

14
Pythonは本当に遅い(パートII)
これは、Pythonが実際にどれくらい遅いかというフォローアップです (または、どのくらいの速あなたの言語で?) 。 最後の質問で100倍のスピードアップを得るのは少し簡単すぎることがわかりました。チャレンジを楽しんでいるが、低レベルのスキルを実際に使用できるより難しいものが必要な場合は、パートIIをご覧ください。課題は、私のコンピューターでテストされた次のpythonコードのx100の高速化を得ることです。 さらに難しくするために、今回はpypyを使用しています。私の現在のタイミングは、pypy 2.2.1を使用して1分7秒です。 ルール 私が実行できるコードを送信した最初の人は正しいですし、私のマシンで100倍高速である場合、50ポイントの報奨金が授与されます。 私は一週間後に最速のコードに勝利を授与します。 import itertools import operator import random n = 8 m = 8 iters = 1000 # creates an array of 0s with length m # [0, 0, 0, 0, 0, 0, 0, 0] leadingzerocounts = [0]*m # itertools.product creates an array …

14
数字間の重力
重力は、質量を持つ任意の2つのオブジェクトを引き付ける力です。この課題では、オブジェクトが数字になり、その質量が値になります。そうするために、力の強さではなく、その方向を気にします。 この数字のセットを想像してください [1 6 9 4 6 9 7 6 4 4 9 8 7] それらはそれぞれ、それ自体と隣接する数字の間に力を生み出します。ある条件下では、これにより別の番号が番号に引き付けられます(移動します)。数値が隣接する数値よりも大きい場合、それを引き付けます。前の例を見てみましょう。 [1 → 6 → 9 ← 4 6 → 9 ← 7 ← 6 ← 4 4 → 9 ← 8 ← 7] 番号1は移動するの6に十分な大きさではありませんが、番号6は等です。基本的に、番号は最大の隣接番号に移動します(番号自体よりも大きい)。隣接する番号の両方が等しい場合、引き付けられません。番号と隣接する番号が等しい場合にも発生します。 これは魅力を示すためだけのものですが、その後はどうなりますか?引力のために衝突する数は合計されます: [20 32 28] したがって、基本的に課題は、一連の数値を与えられ、引き付けられた一連の数値の結果を出力することです。 例1 Input => [10 15 …
52 code-golf 

12
フィンランドの映画館の座席
あなたは映画館の地図をブール行列として与えられます:0は自由席を表し、1は占有されています。各フィン最も離れ選択にシートを歩く(ユークリッド距離でそれらの間の最初-最寄りから)は、一つ、またはいくつかのそのような存在する場合占有行優先順序を。最終的に占有される注文席を示すマトリックスを出力します。つまり、0を2、3、4などに置き換えます // in 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 // out 2 8 3 9 1 10 5 11 6 12 4 13 14 15 7 16 17 1 1 18 // in 0 0 0 …
51 code-golf  matrix 

11
整数のペアを等しくする
これは、インターネット上の数学の問題Iの鋸どこかに触発されましたが、どこ覚えていない(UPDATE:元の問題がで発見された数学の謎のsubredditことが可能であることを提供する証拠と、も参照この数学SEポストを)、を求めると整数の任意のペアに対して次のプロセスが可能かどうかの証拠(私が覚えていることから、任意のペアに対して可能だった): 整数のペアjとkが与えられ、それらの1つを2倍にして、1つをもう1つに加算し、新しい整数のペア、つまり(j、k)->(j + 1、k * 2)または(j * 2、k + 1)。次に、整数のペアを等しくする目的で、これらの整数でこのプロセスを繰り返します。 これらの例は必ずしも最適ではありませんが、正、負、またはゼロの整数でこのプロセスを実行する方法を示しています。 (2, 5) -> (3, 10) -> (6, 11) -> (12, 12) (5, 6) -> (6, 12) -> (7, 24) -> (14, 25) -> (28, 26) -> (56, 27) -> (112, 28) -> (113, 56) -> (226, 57) -> (227, …

12
5、2、16、3580、次は何ですか?
10進数で5の正の整数のべき乗を考慮します。以下は、右揃えの最初の25です。 X 5^X 1 5 2 25 3 125 4 625 5 3125 6 15625 7 78125 8 390625 9 1953125 10 9765625 11 48828125 12 244140625 13 1220703125 14 6103515625 15 30517578125 16 152587890625 17 762939453125 18 3814697265625 19 19073486328125 20 95367431640625 21 476837158203125 22 2384185791015625 23 11920928955078125 24 …

29
クリスマスイブ形式で日付をエンコードする
この投稿が公開された日はクリスマスイブでした。明日はクリスマスになります。昨日はクリスマスイブでした。二日で Christmas Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve …
51 code-golf  string  date 

25
ペイントプログラムを作成します!
前書き ある日、あなたはあなたの子供にコンピューターで描く方法を見せていました。mspaint.exe実行バーに入力します。恐ろしいことに、「検索に一致するアイテムはありません」と表示されます。あなたの子供が描くことができるように、ペイントのシンプルなバージョンを作成する必要があります! チャレンジ 簡単な描画プログラムを作成する必要があります。これを行うには、白いディスプレイウィンドウ(99x99ピクセルより大きい)を開きます。マウスが押されるたびに、マウスがオンになっているピクセルを黒に変更します。 これはcode-golfなので、バイト単位の最短回答が勝ちです!

30
文字列の長さを追加する
チャレンジ: s文字a- z、A- Z、0-の文字列を指定すると9、の長さsをそれ自体に追加し、長さの追加の文字をの全長の一部としてカウントしsます。 入力: 任意の長さの文字列(空にすることもできます)。 出力: 同じ文字列ですが、長さが末尾に追加されます。長さを表す文字も長さの一部としてカウントする必要があります。追加する有効な長さが複数ある場合は、可能な限り短いものを選択してください(例については、テストケースを参照してください)。 テストケース: INPUT -> OUTPUT // Comment aaa -> aaa4 -> 1 // Empty string aaaaaaaa -> aaaaaaaa9 // aaaaaaaa10 would also normally be valid, but violates using the smallest number rule mentioned above aaaaaaaaa -> aaaaaaaaa11 a1 -> a13 // Input can …
51 code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

30
チェックボックスを作成する
マウスを使用してユーザーが操作できる2つの状態のチェックボックスを作成するプログラムを作成します。 具体的には、プログラムは次のすべてを達成する必要があります。 チェックボックスのクリック可能な領域である画面の8×8ピクセル(または必要に応じてそれより大きい)領域を用意します。以降、この領域は単にチェックボックスと呼ばれます。 チェックボックス内でマウスカーソルを移動し、default *マウスボタンを押すと、チェックボックスの状態が切り替わります。 チェック済みがオフになります。未チェックはチェック済みになります。 チェックボックスは、切り替えられたときに移動しないでください。 チェック状態では、チェックボックスは任意の色にできます。 チェックされていない状態では、少なくとも16ピクセルがチェックされた状態と視覚的に区別できる限り、チェックボックスは任意の色にできます。 単一のプログラムインスタンスでは、すべてのチェック状態は視覚的に互いに同一であり、すべての非チェック状態は視覚的に互いに同一である必要があります。 ユーザーが必要なだけチェックボックスをクリックできるように、明示的に終了するまで(たとえば、終了ボタンまたはAlt + F4を使用して)プログラムを終了しないでください。 *デフォルトのマウスボタンは常に左クリックであると想定することもできますが、マウスソフトウェアまたはOSで定義されているデフォルトを使用しても問題ありません。 ノート チェックボックス領域の外にあるものは重要ではありません。それはただのデスクトップかもしれません。トグルごとに変化するコンソールの一部である可能性があります。 チェックボックスの開始状態は関係ありません。 チェックボックス領域は、8×8ピクセル以上の任意のサイズを使用できます。正方形である必要はありません。 コンソールのフォントサイズ、ブラウザーのズーム、モニターの解像度など、制御できない設定を少し許可することができます。プログラムが妥当なテスト設定で動作する限り、有効であるはずです。 プログラムがウィンドウを開く場合、必要に応じて画面上の適切な場所(左上隅など)にドラッグされたと想定できます。 HTMLなどのマークアップ言語や、通常は本格的なプログラミング言語とは見なされない他の言語を使用できます。 チェックボックスは、デフォルトのマウスボタンを使用して切り替え可能でなければなりません。マウスの動きを除いて、他の入力形式(マウスの右ボタンなど)でトグルしても問題ありません。すなわち、マウスがチェックボックス内で単に移動された場合、状態は変更されません。 アクションのチェックボックスのスクリーンショットを強くお勧めします! 得点 バイト単位の最短コードが優先されます。 例 23バイトの標準的なHTMLの例。 <input type="checkbox"> コードスニペットを実行する結果を非表示スニペットを展開 Google Chromeでは、これにより12×12ピクセルのチェックボックスが作成され、チェック状態と未チェック状態の間で約30ピクセルが明確に変化します。 ブラウザのズームが100%であることを考慮します。

30
ASCII英数字をすべて使用せずに印刷します
チャレンジ 次の文字を印刷します。 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 キャッチは、あなたがあなたのコードでそれらのどれも使わないかもしれないということです。 先頭または末尾の改行の有無にかかわらず、任意の順序で印刷できますが、他の文字は印刷できません。 ルール 上記のセットの文字は使用できません 他の文字を使用できます 不正行為なし 禁止されている標準的な抜け穴 これはcode-golfで、最短回答が勝ちです。 明確化 言語で別の文字セットを使用している場合は、その文字セットで英数字に対応するコードポイントを使用することはできません。 関数から文字列を返すことは、有効な形式の出力と見なされます。 文字配列を返すことができます。

30
Nまでの素数
numberを指定するとn >= 2、nwhere よりも小さいすべての正の整数を出力しますgcd(n, k) == 1(k出力番号のいずれかを使用)。この種の数は互いに素です。 例:10出力を提供します[1, 3, 7, 9](数字が明確に区切られていて、何らかのリストである限り、任意の形式で)。リストには重複したエントリを含めることはできず、並べ替える必要はありません。 その他のテストケース: 2 -> [1] 3 -> [1, 2] 6 -> [1, 5] 10 -> [1, 3, 7, 9] 20 -> [1, 3, 7, 9, 11, 13, 17, 19] 25 -> [1, 2, 3, 4, 6, 7, 8, 9, 11, …

25
重要な空白:警官
この課題のために、空白をラインフィード(0x0A)とスペース(0x20)のみとして定義します。ほとんどの言語と正規表現フレーバーは、ASCII範囲の内側と外側の両方で、他の多くの文字も同様に空白と見なすため、対応するビルトインを使用できない場合があります。 警官の挑戦 選択した言語でプログラムまたは関数を作成する必要があります。これは、ASCII(NULを除く)文字で構成される文字列を入力として受け取り、すべての空白を削除して出力します。たとえば、次の入力を受け取った場合: H e l l o, W o r l d! 出力する必要があります Hello,World! 提出物は、すべての空白が削除されたソースコードになります(ソリューションに入力としてソリューションを渡すのと同じプロセスですが、ソリューションにはASCII範囲外の文字が含まれている場合もあります)。あなたの目標は、選択した言語で有効なソリューションを回復するために空白を挿入する必要がある場所を把握することを可能な限り難しくすることです。強盗は、削除するよりも少ない空白を挿入できますが、追加することはできません。また、強盗は正確なコードと一致する必要はなく、有効なソリューションを見つける必要があるだけであることを忘れないでください。 あなたの答えは次を含むべきです: ソリューションを作成した言語(および必要に応じてバージョン)。 空白を削除する前のソリューションのバイトカウント。 空白が削除されたソリューション。 ソリューションはプログラムまたは関数のいずれかですが、スニペットではなく、REPL環境を想定してはなりません。STDIN、コマンドライン引数または関数引数を介して入力を受け取り、STDOUT、関数の戻り値または関数(出力)パラメーターを介して出力することができます。 公平を期すために、選択した言語用の無料のインタープリターまたはコンパイラーが必要です。 ハッシュ、暗号化、または乱数生成に組み込み関数を使用しないでください(乱数ジェネレーターを固定値にシードした場合でも)。ソリューションは、適切なデスクトップマシンで100文字以下の文字列を10秒未満で処理できる必要があります。 回答が7日(168時間)以内に解読されなかった場合、回答が安全であると見なされる時点で独自の解決策を明らかにすることができます。解決策を公開しない限り、7日が経過していても、強盗によってまだ解読されている可能性があります。最短の安全な回答が優先されます(空白を削除する前に測定)。 回答がクラックされた場合、対応する強盗の回答へのリンクとともに、回答のヘッダーにこれを記載してください。 強盗の部分はここに行きます。 クラックされていない提出 <script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 103182;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script> …

12
連続投票の検出
Stack Exchange は、シリアル投票(1人のユーザーが他のユーザーの投稿の多くをアップ投票またはダウン投票する場合)を自動的に検出し、それを取り消します。この課題では、非常に単純な「連続投票」検出器を実装します。 入力 入力は、投票のリストを表す文字列です。2文字のグループはすべて投票を表します。最初のグループは投票者で、2番目のグループは投票対象のユーザーです。たとえば、次の入力 ababbccd 解析することができab ab bc cd、かつ表しa上の投票b二回、 b上の投票c一度、とcに投票をd一度。 入力は小文字のみで構成され、常に0を超える偶数長になります。また、自分自身に投票することもできません(そのため、いいえaaまたはhh)。 出力 このチャレンジのために、連続投票は、特定のユーザーが他のユーザーに3回以上投票することとして定義されます。 出力は、ユーザごとに逆転されなければならない(つまり、多くの票どのようにどのように多くの票であるの形式で、各ユーザーが逆転して、彼らは与えられていることではないどのように多くの票逆転しました)[user][votes][user2][votes2]...。たとえば、abababab(4回a投票する)の入力はb出力する必要があります b4(4票がからに逆転しaましたb)。 出力は任意の順序にすることができますが、入力と出力の両方が上記のように単一の文字列でなければなりません。 テストケース In Out --------------------------------------------------------------------------- abababcbcbcbcbbababa b7a3 edfdgdhdfgfgfgih g3 jkkjjkkjjkkjljljljmlmlnmnmnm j6k3m3 opqrstuv <none> vwvwwvwv <none> xyxyxyxyxyxyxyzyzyzyxzxzxz y10z3 nanananananananabatman a8 banana <none>
51 code-golf 

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