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

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

30
オイラーのtotient関数を計算する
バックグラウンド オイラーのtotient 関数φ(n)は、にn素数であるかそれ以下の整数の数n、つまりxin 0 < x <= nforの 可能な値の数として定義されますgcd(n, x) == 1。私たちは持っていた いくつかのトーティエント - 関連の課題 の前に、ちょうどそれを計算していることはありません1。 totient関数の整数へのマッピングはOEIS A000010です。 チャレンジ 整数を指定してn > 0、計算しφ(n)ます。コマンドライン引数、標準入力、関数引数、またはその他の妥当なものを使用して入力を取得できます。標準出力、戻り値、またはその他の妥当なものを使用して出力することができます。匿名関数は受け入れ可能です。入力はint、Cなどの整数を格納する自然な方法をオーバーフローさせないと仮定することができますが、255までの入力をサポート する必要があります。 例 φ(1) => 1 φ(2) => 1 φ(3) => 2 φ(8) => 4 φ(9) => 6 φ(26) => 12 φ(44) => 20 φ(105) => 48 バイト単位の最短回答が優先されます。あなたの言語がUTF-8以外のエンコーディングを使用している場合は、回答でそれを言及してください。

30
nを指定してi ^ nを見つける
チャレンジ できるだけ少ない文字で、nが与えられ、0より大きい正の整数であるi ^ nの値を見つけます。これは文字列として出力する必要があります。 知らない人のために、iはi ^ 2 = -1となるように定義されています。そう: i ^ 1 = i i ^ 2 = -1 i ^ 3 = -i i ^ 4 = 1 これが繰り返されます。 ルール 言語が複素数をサポートしている場合、これを解決する可能性のある関数や算術を使用しないでください。 とにかく小数を返す答えには浮動小数点の不正確さは問題ありませんが、整数入力は正確な結果を与えるはずです ボーナスポイント -5、nも負の値を計算できる場合 -15(実数の値を計算できる場合)(このボーナスには上記のボーナスの-5が含まれます) がんばろう!

3
シンプルなレッドストーンシミュレーター
RedstoneはゲームMinecraftの素材であり、多くの複雑な仕掛けに使用されます。このプログラムでは、レッドストーンワイヤ(Rで表記)、レッドストーントーチ(Tで表記)、およびブロック(Bで表記)の3つのアイテムのみをシミュレートする必要があります。 以下に、レッドストーンの仕組みに関する基本的なルールのリストを示します。 A redstone torch sends power to any adjacent redstone wire. TRRRR ^This redstone wire is powered. Redstone wire can only hold power for 15 blocks. TRRRRRRRRRRRRRRRR ^This last wire is unpowered, because the torch is >15 blocks away. A block is said to be powered if a powered …


18
単数形を複数形に変換する
名詞には、単数形と複数形の2つの形式があります。これら2つの間の変換は非常に簡単です。 通常、あなたはそれで終わりますs。例 car=> cars。 それはで終わる場合s、x、z、chまたはsh、でそれを終わらせますes。例 bus=> buses。 y直前の子音で終わる場合、をに変更yしiesます。例 penny=> pennies。 fまたはで終わる場合はfe、に変更しvesます。例 knife=> knives。 o直前の子音で終わる場合は、に変更しoesます。例 potato=> potatoes。 仕事 単数形の名詞が与えられます。指定された名詞を複数形に変換して出力する必要があります。 ルール mouseやなどの不規則な名詞は与えられませんmoose。 safe(safes;違反#4)、piano(pianos;違反#5)およびo(oes、違反#5)などの例外は与えられません。 mosquito(mosquitosまたはmosquitoes)やroof(roofsまたはrooves)など、2つ以上の複数形の可能性がある単語は与えられません。 数えられない名詞は与えられません。 y 母音としてカウントされません。 例 car => cars bus => buses potato => potatoes knife => knives penny => pennies exception => exceptions wolf => wolves eye => eyes …

4
レーザーミラーポータルパーティー
2Dボードには次のオブジェクトが含まれます。 ^、>、v、または<:上向き発光レーザ、右、下、またはそれぞれ左。複数ある場合があります。レーザーは、空のスペースで直線的に移動します(空のスペースはドットで表され.ます)。レーザーはエミッターを通過しません。 *: 標的。レーザーはターゲットを通過します。複数ある場合があります。 ボードがあり、次のオブジェクトが含まれています。 @:頑丈な壁。レーザーはここを通過しません。 \:左寄りの反射板。次の表に従ってレーザーの方向を変更します。 Direction laser is travelling Direction of laser after hitting reflector Up Left Right Down Down Right Left Up リフレクターがどのように機能するかについては、かなり直感的でなければなりません。それらを実際の両面ミラーとして想像してください。方向性ははっきりしているはずです。 /:右寄りの反射板。次の表に従ってレーザーの方向を変更します。 Direction laser is travelling Direction of laser after hitting reflector Up Right Right Up Down Left Left Down 1、2、3... 9:ポータル。番号はポータルのチャネルを示します-同じチャネルのポータルは正確に2つあります(たとえば、3つはありません1)。ポータルは、レーザーの位置を同じチャネルの他のポータルの位置に変更します。例えば: > 1 @ …
27 code-golf 

27
ブロック対角行列を印刷する
これは単純な、一口サイズ(バイトサイズ?)のコードゴルフです。10未満の正の整数の空でないリストが与えられると、ブロック対角行列を出力します。リストはブロックのサイズを順番に指定します。ブロックは10未満の正の整数で構成する必要があります。したがって、入力として指定された場合 [5 1 1 2 3 1] たとえば、出力は次のようになります。 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 …

11
絵文字を焼いて
有効なUTF-8および有効なWindows-1252(ほとんどの言語は、おそらく通常のUTF-8文字列を取ることになるでしょう)の両方で、文字列、文字リスト、バイトストリーム、シーケンス...を考えると、それを変換、である(からふり、それをあります)Windows-1252からUTF-8。 ウォークスルーの例 UTF-8文字列 I ♥ U T F - 8 は、Windows-1252テーブルの 49 20 E2 99 A5 20 55 54 46 2D 38 これらのバイト値が、Unicodeに相当するバイトとして表され ます。 49 20 E2 2122 A5 20 55 54 46 2D 38 I â ™ ¥ U T F - 8 例 £ → £ £ → …

8
ヤッツィー最高スコア
ヤッツィーは、5つの6面のサイコロと、スコアを記入するための13の異なるボックスのスコアシートでプレイされるゲームです。各ボックスには、独自のスコアリングルールがあります。 1秒、2秒、3秒、4秒、5秒、6秒はすべて、それぞれのサイコロの合計に等しいポイントを獲得します(つまり、3として獲得した[3、2、3、1、5]のロールは6ポイントを獲得します:3それぞれ3)。 3種類と4種類(聞こえると、3つまたは4つのサイコロが転がった)は、5つのサイコロすべての合計に等しいポイントを獲得します。 フルハウス(2つのサイコロが1つの値を示し、他の3つのサイコロが別の値を示す)が25ポイントを獲得 小さなストレート(4つの連続した値)が30ポイントを獲得 大きなストレート(すべて連続した値)が40ポイントを獲得 ヤッツィー(すべてのサイコロが同じ値を示す)が50ポイントを獲得 13番目(チャンス)はゲーム内では理にかなっていますが、この課題にはそれほど意味がありません。さらに、ゲームには余分なヤッツィーのボーナスがありますが、ここでは意味がありません。課題は... 5つのサイコロを入力として(5つの整数1〜6、ただし入力は便利ですが、入力は常に有効であると想定できます)、その「手」で可能な最高スコアを出力します。このチャレンジでは、上記のリストのスコアリング方法のみが有効です(具体的には、このチャレンジではチャンスは有効なスコアボックスではありません)。スコアは、それが整数であろうと文字列表現であろうと、その小数の数値として出力されるべきです。すぐに数字として認識できるはずです。空白の先頭/末尾は問題ありません。これはプレゼンテーションではなくスコアを取得することです。 ゴルフをコーディングすれば、特定の言語で最も少ないバイト数で答えが得られます。標準的な抜け穴は禁止されています。 テストケース (これらはすべて独立していることに注意してください、挑戦はサイコロの1つの「ハンド」を獲得することです): in: 1 5 4 3 2 out: 40 in: 1 1 4 3 1 out: 10 in: 2 2 6 5 3 out: 6 in: 2 4 2 4 6 out: 8 in: 1 1 1 1 1 …
26 code-golf  number 

28
最も可能性のある数を転がさずに転がすことができるサイコロの数
問題 n=2サイコロから開始: ロールnそれぞれ数1〜6も同様に可能性の高い各ダイ上でサイコロ、。 それらの合計がnサイコロの最も可能性の高い合計に等しいかどうかを確認し3.5*nます。 それらが等しい場合、終了します。 それ以外の場合は、印刷しn、n+2サイコロで最初から繰り返します コードはこの手順を正確に行う必要はありませんが、randomnessの定義に基づいて、確率的にそれと同等のランダム出力を与える必要があります。 プログラムは、すべての数値を独自の行に出力する必要があります。たとえば、プログラムが最大8個のサイコロを取得し、8個のサイコロで最も可能性の高い数を転がした場合、出力は次のようになります。 2 4 6 実行例 2つのサイコロで7、最も可能性の高い合計です。ロールされた数字が2とであったとしましょう3。次に、印刷します2。 4つのサイコロで14、最も可能性の高い合計です。のは、出目がいたとしましょう3、4、2、と5。そして、合計は14なので、プログラムはここで終了します。 この場合の最終出力は"2"です。 ルール code-golfのバイト単位の最短ソリューション 標準的な抜け穴が適用されます ランダム性のメタ定義が適用されます プログラムだけでなく機能も使用できます
26 code-golf  random 

10
あなたのプログラムをどれくらい早く言うことができますか?
私は最近、筆記を手伝うために、ディクテーションソフトウェアをダウンロードすることにしました。ただし、コーディング中は言葉を記号から記号に変えたり、元に戻したりする必要があるため、うまく機能しません。私がすべてのシンボルである難解な言語でコーディングしているときはさらに悪化します。 ディクテーションプログラムの使用をより一貫性のあるものにするために、文字モードに切り替えることにしました。代わりに各文字の名前を言うだけです。問題が解決しました!これは私の小説のリリース日を少し遅らせますが... だから、キャラクターの名前が長いほど、言うのに時間がかかると仮定すると、私のプログラム/文章のいくつかを綴るのにどれくらい時間がかかりますか? 仕様書 印刷可能なASCIIのみで構成される文字列を指定すると、各文字のUnicode名の合計を返します。たとえば、/呼び出されたSOLIDUS7つの文字で、そしてAあるLATIN CAPITAL LETTER A22文字で。 しかし、覚えておいて、実行するためにあなたのプログラムを大声で言わなければならないので、それらのスコアは私がそれらを言うのにかかる時間、すなわち各キャラクターのユニコード名の長さの合計に基づきます。 テストケース: input => output入力に末尾/先頭スペースのない形式で。 A => 22 / => 7 Once upon a time... => 304 slurp.uninames>>.comb.sum.say => 530 JoKing => 124 !" #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ => 1591 Double-check your \s on the last test case ;) => 755 <say "<$_>~~.EVAL">~~.EVAL => 388 …

17
無限に多くの素数
ユークリッド以来、私たちは素数が無限にあることを知っています。引数は矛盾によるものです:有限数しかない場合、たとえば場合、は、これらの素数なので、その素因数分解はリストにない新しい素数を生成する必要があります。したがって、有限の素数のみが存在するという仮定は誤りです。p1,p2,...,pnp1,p2,...,pnp_1,p_2,...,p_nm:=p1⋅p2⋅...⋅pn+1m:=p1⋅p2⋅...⋅pn+1m:=p_1\cdot p_2\cdot...\cdot p_n+1 ここで、が唯一の素数であると仮定しましょう。上記のメソッドは、新しい(可能な)プライムとしてを生成します。メソッドを再度適用すると、得られ、次に、次にとなり、両方ともおよびは新しい素数などです。合成数を取得する場合は、最も新しい素数を取得します。これにより、A000945が生成されます。2222+1=32+1=32+1=32⋅3+1=72⋅3+1=72\cdot 3+1=72⋅3⋅7+1=432⋅3⋅7+1=432\cdot 3\cdot 7+1=432⋅3⋅7⋅43+1=13⋅1392⋅3⋅7⋅43+1=13⋅1392\cdot 3\cdot 7\cdot 43+1=13\cdot 139131313139139139 チャレンジ 素数と整数与えられた場合、次のように定義されたシーケンスの番目の項を計算します。p1p1p_1nnnnnnpnpnp_n pn:=min(primefactors(p1⋅p2⋅...⋅pn−1+1))pn:=min(primefactors⁡(p1⋅p2⋅...⋅pn−1+1))p_n := \min(\operatorname{primefactors}(p_1\cdot p_2\cdot ... \cdot p_{n-1} + 1)) これらのシーケンスは、ユークリッドマリンシーケンスとして知られています。 例 以下のためのp1=2p1=2p_1 = 2: 1 2 2 3 3 7 4 43 5 13 6 53 7 5 8 6221671 9 38709183810571 用p1= 5p1=5p_1 = 5(A051308): 1 …

11
ギャンブラーの偽りのサイコロ
ギャンブラーの誤fallは認知バイアスであり、しばしば発生したことが将来発生する可能性が低く、しばらく発生しなかったものはすぐに発生する可能性が高いと誤って予想します。あなたの仕事は、これの特定のバージョンを実装することです。 チャレンジの説明 1から6までのランダムな整数を返す関数を作成します。キャッチ:関数が最初に実行されるとき、結果は均一(1%以内)である必要がありますが、以降の各呼び出しは、以前にロールされた回数が少ない値を優先してスキューされます。具体的な詳細は次のとおりです。 ダイは、これまでに生成された数のカウントを記憶しています。 各結果は次の式で重み付けされます:countmax−countdie+1countmax−countdie+1count_{max} - count_{die} + 1 たとえば、これまでのロールカウントが 1、0、3、2、1、0場合、重みは 3、4、1、2、3、4になります。つまり、よりを振る可能性が4倍高い。[ 1 、0 、3 、2 、1 、0][1,0、3、2、1、0][1, 0, 3, 2, 1, 0][ 3 、4 、1 、2 、3 、4 ][3、4、1、2、3、4][3, 4, 1, 2, 3, 4]222333 式は、ロール結果がと同じように重み付けされることを意味することに注意してください。[ a 、b 、c 、d、e 、f][a、b、c、d、e、f][a, b, c, d, e, f][ a + n 、b …
26 code-golf  random 

11
このセットは自然数を表しますか?
集合論では、自然数は通常、純集合としてエンコードされます。これは、空集合または他の純集合のみを含む集合です。 。ただし、すべての純粋なセットが自然数を表すわけではありません。この課題は、特定の純粋なセットが自然数のエンコードを表すかどうかを決定することです。N = { 0 、1 、2 、3 、。。。}N={0、1、2、3、。。。}\mathbb{N} = \{0, 1, 2, 3, ...\} 自然数のエンコードは、次のように機能します1。 ゼロは空のセットです:Se t (0 )= { }Set(0)={} Set(0) = \{\} 数値:n > 0n>0n > 0Se t (n )= Se t (n − 1 )∪ { Se t (n − 1 )}Set(n)=Set(n−1)∪{Set(n−1)} Set(n) = Set(n-1) \cup …

12
N番目のグリフォン番号
先日、私は一連の数字を思いつき、それに対するOEIS番号を確認することにしました。驚いたことに、シーケンスはOEISデータベースに含まれていないように見えたので、自分にちなんでシーケンスに名前を付けることにしました(私よりもはるかに賢い他の誰かがおそらくこれを思いついており、誰かが見つけたらこのシーケンスの実際の名前はコメントしてください。質問のタイトルを変更します)。シーケンスがどこにも見つからなかったので、自分の名前にちなんで名前を付けることにしました。編集:このシーケンスがOEISシーケンスA053696-1に等しいという事実に注意を向けてくれた@Surbに感謝します。 グリフォン番号は、a+a2+...+axa+a2+...+axa+a^2+...+a^xという形式の番号です。。。+ a x。ここで、aaaとxxxは両方とも2以上の整数であり、Gryphonシーケンスは昇順のすべてのGryphon番号のセットです。グリフォン番号を形成する方法が複数ある場合(最初の例は303030、両方とも2+22+23+242+22+23+242+2^2+2^3+2^4および5+525+525+5^2)、番号はシーケンス内で1回だけカウントされます。最初のいくつかのGryphon番号は次のとおりです。6,12,14,20,30,39,42,56,62,726,12,14,20,30,39,42,56,62,726, 12, 14, 20, 30, 39, 42, 56, 62, 72。 あなたのタスク: 入力として整数nnnを受け取り、nnn番目のグリフォン数を出力するプログラムまたは関数を作成します。 入力: 0から10000までの整数(両端を含む)。シーケンスは、0インデックス付きまたは1インデックス付きのどちらでも使用できます。混乱を避けるために、回答で使用するインデックスシステムを明記してください。 出力: 入力に対応するグリフォン番号。 テストケース: これは、シーケンスのインデックスが0であると想定していることに注意してください。プログラムが1インデックスのシーケンスを想定している場合、すべての入力番号をインクリメントすることを忘れないでください。 Input: Output: 0 ---> 6 3 ---> 20 4 ---> 30 10 ---> 84 99 ---> 4692 9999 --> 87525380 得点: これはcode-golfであるため、バイト単位の最低スコアが優先されます。

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