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

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

4
「半分空のグラス」のようなものはありません
グラスが半分いっぱいなのか半分空っぽなのかという修辞的な質問を知っているでしょう。私はこのフレーズに少しうんざりしているので、プログラムでガラスの膨らみや空さに関するこの混乱を解消する時が来たと判断しました。 あなたの仕事は、ASCIIいガラスの ASCIIアート表現を取り、対応する素敵なガラスの ASCIIアートを出力するプログラムを書くことです。それはまた、ガラスであるかどうかを決定しなければならないfull、mostly full、mostly emptyまたはempty出力これも(任意4定数、異なる出力値が何を)。 TL; DR 入力は、グラスの内側と外側にランダムに分布するグラス(#キャラクター)と液体(a-z)のASCIIアートです。ガラス内の液体は落下して底に溜まり、ガラス外の液体は廃棄されます。液体が底に落ち着いた後、グラスのASCIIアートを出力します。ガラスがどれだけいっぱいかを判断し、それも出力します。 glyい素敵なメガネ ガラス一般的には、で作られた容器であり、#底部、両側壁なし上部と文字。 有効なメガネには穴がありません。(すべての#キャラクターを接続する必要があります。) #入力ASCIIアートの各行に少なくとも2つの文字があるか、ないかのいずれかです。正確に1つの行はありません#。 入力ASCIIアートの一番上の行には、常に2があり#ます。 有効なメガネには、#キャラクターの境界壁に1つのローカルミニマムがあります。これは、液体がどこかに閉じ込められないことを意味します。 ガラスの境界壁には局所的な最大値はありません。 #ガラスの底の下には何もありません。 ガラスの内部は常に接続されたスペースです。 入力に先頭/末尾の空白と改行が含まれる場合があります。 有効なメガネと無効なメガネの例: VALID (possible input to your program): # # # # #### # # # # # # # # # # # # ## # # # # ### # …

11
triplegolf-ソースコードの長さだけでなく!
この課題の目標は、次の3つの長さがまったく同じであるプログラムを作成することです。 ソースコードの長さ 標準出力に出力する出力の長さ 選択した(変更されていない)コンパイラで生成されるコンパイラ警告の長さ 勝者は、3つの基準をすべて満たす最短のコードであり、少なくとも1文字の長さが必要です。 物事を盛り上げるために、出力の文字数が3未満の場合、各文字の長さに5ポイントのペナルティが加算されます(単一のタイプの場合は+10、2つの場合は+5)。 (改行は選択として1文字または2文字としてカウントされますが、3つの基準すべてで一貫している必要があります。先頭および末尾の空白は、3つの基準すべての行で無視されます) 等しいスコアの場合、(ゴミの代わりに)最も興味深い結果を出力するものが勝者です。
15 code-golf 

1
ニューラルネットワークで並べ替える
これまでのニューラルネットゴルフの課題(これとそれ)は、私に新しい課題を提起するきっかけになりました。 チャレンジ 任意の4次元入力ベクトルが与えられると、ように最小のフィードフォワードニューラルネットワークを探す(a 、b 、c 、d)(a、b、c、d)(a,b,c,d)の整数のエントリと[ - 10 、10 ][−10、10][-10,10]、ネットワーク出力sort(a,b,c,d)sort(a,b,c,d)\textrm{sort}(a,b,c,d)と厳密に0.50.50.5より小さい座標に関する誤差。 許容性 この課題に対して、フィードフォワードニューラルネットワークはレイヤーの構成として定義されます。層は、関数であるL:Rn→RmL:Rn→RmL\colon\mathbf{R}^n\to\mathbf{R}^m行列で指定されたA∈Rm×nA∈Rm×nA\in\mathbf{R}^{m\times n}の重みベクトルb∈Rmb∈Rmb\in\mathbf{R}^mのバイアス、及び活性化関数 f:R→Rf:R→Rf\colon\mathbf{R}\to\mathbf{R} coordinate-適用されます賢い: L(x):=f(Ax+b),x∈Rn.L(x):=f(Ax+b),x∈Rn. L(x) := f(Ax+b), \qquad x\in\mathbf{R}^n. アクティベーション関数は任意のタスクに合わせて調整できるため、この課題を面白くするためにアクティベーション関数のクラスを制限する必要があります。次のアクティベーション機能が許可されています。 身元。 f(t)=tf(t)=tf(t)=t ReLU。 f(t)=max(t,0)f(t)=max⁡(t,0)f(t)=\operatorname{max}(t,0) ソフトプラス。 f(t)=ln(et+1)f(t)=ln⁡(et+1)f(t)=\ln(e^t+1) 双曲線正接。 f(t )= tanh(t )f(t)=タン⁡(t)f(t)=\tanh(t) シグモイド。 f(t )= etet+ 1f(t)=etet+1f(t)=\frac{e^t}{e^t+1} 全体として、許容ニューラルネットは、フォームとるLk∘ Lk − 1○は⋯ ○はL2∘ L1Lk∘Lk−1∘⋯∘L2∘L1L_k\circ L_{k-1}\circ\cdots \circ L_2\circ L_1、いくつかのためにkkk各層、L私L私L_i重みで指定されたA私A私A_i、バイアスb私b私b_i、及び活性化関数f私f私f_i上記のリストから。たとえば、次のニューラルネットは許容されます(このチャレンジのパフォーマンス目標を満たしていませんが、有用なガジェットである可能性があります)。 [ 分(a …

5
現在の干支は何ですか?
指定された国に従って、指定された時間の東部干支の絵文字を表示します。 東の黄道帯は、動物とその評判の高い属性を、12年周期で繰り返される各年に割り当てる分類体系です。また、時間に割り当てられます。 ルール: 国はISO 3166-1 alpha-3コードで指定する必要があります。一覧はこちらです。 入力形式は次のようにする必要があります<ISO code> HH:MM。入力は単一の文字列でなければなりません。この形式に適合しない入力は、ドントケアの状況に該当します。 与えられた時間が以下のチャートの境界内にある場合、どちらの黄道帯も出力できます。 これはコードゴルフであるため、バイト単位の最短コードが優先されます。 黄道帯: 国が指定されていない黄道帯がデフォルトです。 最初の干支(23:00 – 01:00): ラット🐀(U + 1F400) ペルシャ(IRN)のマウス🐁(U + 1F401) 2番目の干支(01:00 – 03:00): 牛🐂(U + 1F402) ベトナムの水牛🐃(U + 1F403)(VNM) ペルシャの牛🐄(U + 1F404) 3番目の干支(03:00 – 05:00): タイガー🐅(U + 1F405) ペルシャのヒョウ🐆(U + 1F406) 4番目の干支(05:00 – 07:00): ウサギ🐇(U + 1F407) ベトナムの猫🐈(U …

7
10進数の「XOR」演算子
多くのプログラミング言語は、整数の2進数(2進数)を操作する演算子を提供します。これらの演算子を他のベースに一般化する1つの方法を次に示します。 ましょう、X及びYは塩基で一桁の数字であるB。単項演算子の定義~とバイナリ演算子&、|および^、そのようなことを: 〜x =(B-1)-x x&y = min(x、y) x | y = max(x、y) x ^ y =(x&〜y)| (y&〜x) B = 2の場合、おなじみのビット単位のNOT、AND、OR、XOR演算子が得られることに注意してください。 B = 10の場合、「10進数XOR」テーブルを取得します。 ^ │ 0 1 2 3 4 5 6 7 8 9 ──┼──────────────────── 0 │ 0 1 2 3 4 5 6 7 8 9 1 │ …
15 code-golf  math  number 

30
割合を見つける
私たちはしばらくの間、素敵で簡単な挑戦をしていないので、ここに行きます。 それぞれが000より大きい整数のリストと入力としてのインデックスを指定すると、リストの合計の指定されたインデックスにあるアイテムの割合を出力します。 出力は、フロート/整数の自然な表現があなたの言語(単項式、10進数、教会の数字など)にあるものでなければなりません。何らかの方法で出力を丸めることを選択する場合、小数点以下2桁以上にする必要があります(合理的な場合、1.21.21.2は丸める必要はありませんが、1.201.201.20も完全に受け入れられます)。 インデックスは1インデックスまたは0インデックスのいずれかで、常に配列の境界内にあります。 これはcode-golfなので、バイト単位の最短コードが勝ちです! 例 1インデックスを使用し、2 dpに丸めます list, index => output [1, 2, 3, 4, 5], 5 => 5 / 15 => 33.33 [7, 3, 19], 1 => 7 / 29 => 24.14 [1, 1, 1, 1, 1, 1, 1, 1, 1], 6 => 1 / 9 => 11.11 …

16
ヒドラの攻撃
ヒドラスを殺すことができる熟練した戦士であるのではなく(こちらとこちらをご覧ください)、今度はあなたは戦士を殺す方法やクリーチャーに対してどの武器を使用するかについての予備知識がありません。 この問題では、1つの頭を切り落とすたびに、同じ場所で2つ成長します。多数のヘッドを同時に切断するメカニズムがないため、ヘッドの数は増えるだけです。この場合、HydraはN(N⩾1)頭から開始できます。レッツ・コールの最初の出会い世代と我々として第一世代から頭を表します0、として最初の打撃後に作成されたヘッド1ように、と。 入力 NHydraが最初に持つヘッドの数を表す整数と、Nインデックスを含むサイズのリスト(この例では0インデックス形式を使用します)が与えられ、ヘッドが切り取られます。与えられたインデックスは常に有効であると想定できます-頭を切り落とすとリスト(つまり頭)が大きくなることに注意してください。 例 入力:N = 4および[0,4,2,5] ジェネレーション0-攻撃インデックス0 0 0 0 0 => 1 1 0 0 0 ^ ^ ^ ジェネレーション1-攻撃インデックス4 1 1 0 0 0 => 1 1 0 0 2 2 ^ ^ ^ ジェネレーション2-攻撃インデックス2 1 1 0 0 2 2 => 1 1 3 3 …
15 code-golf 

18
数字の簡素化
どうして、テレビ画面に1秒間表示された6桁または7桁の電話番号を思い出せないのですか?!以下に説明する特別なテクニックを使用すると、ウォーキング電話帳になります! 明らかに、数字402は110010010数字337377よりも覚えやすく、数字は数字よりも覚えやすい957472です。これは、記憶された番号は、一方ではできるだけ少ない数字を含む必要があることを意味し、他方では、できるだけ多くの繰り返し番号を含むことが望ましいことを意味します。 記憶の困難さの基準として、numberの桁数とnumberの異なる桁数の合計を取ります。記憶された番号は別の番号システムで書くことができ、おそらく覚えやすくなります。たとえば65535、16進表記の数字は次のようになりFFFFます。 仕事 複雑さの基準を最小限に抑えるために、数値システムのベースを選択するプログラムを作成する必要があります。番号体系の基数は2〜36の範囲で選択する必要があり、その後、数字0-9と英字A-Zを使用して数値を表すことができます。 入力 入力には、1〜999999999の10進整数が含まれます。 出力 出力には、番号体系の基数(2〜36)が含まれている必要があります。これにより、記憶の複雑さの基準と、選択した番号体系の番号が1つのスペースで区切られます。複数のベースが基準に同じ値を与える場合、それらの中から最小のものを選択します。 ノート 文字は大文字でなければなりません(A-Z)。 テストケース 入出力 1 2 1 2 3 2 65535 16 FFFF 123 12 A3

14
マップ内の指定された長方形の外側にランダムポイントを生成します
前書き 競技場のこの視覚化を考えると: (0,0) +----------------------+(map_width, 0) | A | |-----+-----------+----| | D | W | B | |-----+-----------+----| | C | +----------------------+(map_width, map_height) (0, map_height) ゲームがプレイされるマップ全体は、コーナー座標(0,0)および(map_width、map_height)を持つ長方形です。敵のスポーンに適格なポイントは、連合S=⋃(A,B,C,D)S=⋃(A,B,C,D)S = \bigcup (A, B, C, D) チャレンジ S.の内側にあなたのコードであることが保証されて戻ってランダムな点(x、y)は各座標の確率がされていることを意味し、任意の追加的なバイアスを導入することはできませんという書き込みコード均一に分布仮定生成する乱数のそれはあなたの選択(例えば機能与えられました| library | dev / urandom)は公平です。 バイト単位の最短ソリューションが勝ちます! 入力 合計6個の正の整数入力変数が順番に渡されます map_width, map_height, W_top_left_x, W_top_left_y, W_width, W_height。すべての領域(A、B、C、D、W)の(計算された)表面積はそれぞれ> 10であると想定できるため、空のスペース/領域はありません。 入力例: 1000, …
15 code-golf  random  game 

11
自動的に予測不可能に文字のアリアを組み立てます
タイトルを提供してくれた@ComradeSparklePonyに感謝します。 この課題は非常に単純でなければなりません。3つのリストが与えられます。 最初は、タイトルケースの名のリストです。 2番目は、小文字の形容詞のリストです。 3番目は、小文字の名詞のリストです。 名前、オプションの形容詞、名詞、およびoutputをランダムに選択してください<Name>'s <adjective> <noun>。ただし、各単語は同じ文字で始まる必要があります。すべての単語は文字で始まると想定できます。また、想定することもできます(ただし、回答する場合は注意してください): すべての単語はアルファベット文字のみで構成されていること 名前ごとに少なくとも1つの名詞があること 各名詞に少なくとも1つの名前があること ただし、形容詞はオプションであるため、出力は引き続き有効であるため、名前と名詞の特定のペアに対して形容詞が存在するとは想定できません。 共有レターを一律に選択する必要はありませんが、使用可能なすべてのレターは、発生する可能性がゼロ以外でなければなりません。ただし、特定の文字のすべての出力が、言語の乱数ジェネレーターの制限内で発生する可能性がほぼ等しいことを確認する必要があります。形容詞の場合、これは、この文字の他の形容詞のすべてと同じチャンスを持つ「この文字の形容詞なし」を意味する追加のエントリを持つことに相当します。 入力リストの例: Joan Neil Nicola Oswald Sherman Stephanie new novel old original second silent jeep noun novel output second sheep snake これらの入力の出力例(各行は個別の例です): Stephanie's second second Sherman's silent snake Oswald's original output Nicola's novel novel Neil's noun Joan's jeep …
15 code-golf  random 

30
関数を書く[終了]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 5ヶ月前に閉店。 私はこの挑戦がまだ存在しないとは信じられない。 チャレンジ 関数を書きます。 詳細 プログラムは、なんらかの呼び出し可能な関数を定義する必要があります。これには、関数、ラムダ関数、またはサブルーチンとして一般に知られているものが含まれます。これらのタイプの呼び出し可能オブジェクトはすべて、この投稿では「関数」と呼ばれます。 関数への入力はオプションであり、必須ではありません。 関数からの戻り値もオプションであり、必須ではありませんが、制御は呼び出し側プログラムに戻す必要があります。 関数は、後でアクセスできるように、何らかの変数に割り当てる必要があります。これには、間接割り当て(名前付き関数を宣言すると自動的に名前が現在のスコープに追加されるほとんどの一般的な言語)と直接割り当て(匿名関数を変数に直接割り当てる)が含まれます。 関数に名前を付ける必要はありません。 関数はユーザーが作成する必要があります -言語から変数にデフォルト関数を割り当てることはできません。 標準的な抜け穴はありません、お願いします。 これはcode-golfであるため、バイト単位の最低スコアが優先されます。

6
音節の発音可能なナンセンスワードを生成する
あなたの仕事は、指定された数の「音節」で合理的に発音できるナンセンスな単語を生成することです。プログラムが実行されるたびに、異なる意味のない単語が生じる可能性があります。 発音性 発音可能な単語は、2つの子音グループに挟まれている可能性のある母音グループで構成される音節で構成されます。すべての音がすべての位置で発音できるわけではなく、これは言語に依存するため、英語話者が理解できるパターンを使用します 子音グループの開始: b c d f g h j k l m n p r s t v w y z bl br ch cl cr dr dr fr fr gh gl gn gr kn ph pl pr qu sc sh sk sl sm sn sp st th …

11
新しい注文#2:私のやり方を変える
はじめに(無視してもよい) すべての正の数を規則正しい順序(1、2、3、...)で並べるのは少し退屈ですよね?そのため、すべての正の数の順列(再編成)に関する一連の課題があります。これは、このシリーズの2番目の課題です。最初の挑戦はここで見つけることができます。 この課題では、グレーコードを使用して自然数を再調整します。グレイコード、または「反射バイナリコード」は、2つの連続する値が1ビットだけ異なるような方法でのバイナリエンコーディングです。このエンコードの実用的な用途は、ロータリーエンコーダーで使用することです。したがって、「Turn My Way」を参照します。 このエンコードはある程度の自由度があることに注意してください。例えば、バイナリ1100以下の4つの可能な次のコードがある:1101 1110 1000 0100 Iが定義する理由である(nは)バイナリエンコーディングが異なるだけ一文字こと最小、以前に使用されていない値として。このシーケンスはA163252に対応します。a(n)a(n)a(n) これは「純粋なシーケンス」のチャレンジであるため、タスクは入力として特定のnに対してa (n )を出力a(n)a(n)a(n)です。ここでa (n )はA163252です。nnna(n)a(n)a(n) 仕事 整数入力nnn与えられると、整数形式(バイナリ形式ではない)でa(n)a(n)a(n)出力します。 a(n)a(n)a(n)は、a(n−1)a(n−1)a(n-1)とa(n)a(n)a(n)が2進数で書かれた場合に1ビットだけ異なるように、シーケンスの初期に発生しない最小の正の整数として定義されます。 注:ここでは、1ベースのインデックス付けが想定されています。0ベースのインデックスを使用できます。そのためa(0)=1;a(1)=3a(0)=1;a(1)=3a(0) = 1; a(1) = 3など。これを使用することを選択した場合は、回答にこれを記載してください。 テストケース Input | Output -------------- 1 | 1 5 | 4 20 | 18 50 | 48 123 | 121 1234 | 1333 3000 | 3030 …

9
カーペットを転がす
この質問はKevin Cruijssenの質問に触発されました。 カーペットがレイアウトされたので、私たちはそれを転がしたいと思います。あなたの仕事は、文字列を受け取り、この文字列から作られたらせんを返すプログラムを書くことです(横から見たロールされたカーペットを表します)。 カーペットを丸める1ステップの手順は次のとおりです。私の言いたいことを説明する例があります。理解を深めるために、例は部分的に丸められたカーペットで始まっていることに注意してください。 ac rpet カーペットの「頭」と「尾」を分離します。頭はこれまでに巻かれたものであり、尾は巻かれたままのものです。 Head: ac Tail: rp et ヘッドを時計回りに90°回転させます。 Rotated head: ra Tail (unchanged): pc et 新しいヘッド(ここでの幅があれば2)(ここでは以下の尾の長さよりも2) 次に、尾の上に置きます それ以外の場合、カーペットは(ステップの開始時と同じように)ロールされました New carpet: ra pc et 必要な回数だけ手順を繰り返します。 カーペットのローリングのすべてのステップを示す2つの例: carpet c arpet ac rpet ra pc et 0123456789 0 123456789 10 23456789 21 30 456789 432 501 6789 いくつかの精度: …
15 code-golf  string 

9
日付範囲のギャップを見つける
r入力、出力として日付範囲のリストを指定するか、にない範囲を返しますr。 この例では、入力はYYYY-MM-DD形式になります。 3つの日付範囲があるとします。 [2019-01-01, 2019-02-01] [2019-02-02, 2019-04-05] [2019-06-01, 2019-07-01] あなたは、間にギャップがあることがわかります2019-04-05とは2019-06-01。 出力はそのギャップになります: [2019-04-06, 2019-05-31] ルール 入力と出力は、一貫している限り、任意の妥当な日付またはコレクションの形式にすることができます。 入力が順序付けられていないと仮定します。 日付範囲はである必要はありませんが[latest, earliest]、ルール2に従う必要があります。 入力に重複する日付がないと仮定します テストケース: 入力: [[2019-01-01, 2019-02-01],[2019-02-02, 2019-04-05],[2019-06-01, 2019-07-01]] 出力: [[2019-04-06, 2019-05-31]] 入力: [[2019-01-01, 2019-02-01],[2018-02-02, 2018-04-05],[2019-06-01, 2019-07-01]] 出力: [[2018-04-06, 2018-12-31], [2019-02-02, 2019-05-31]] 入力: [[2019-01-01, 2019-02-01],[2019-02-02, 2019-03-02],[2019-03-03, 2019-07-01]] 出力: [] 入力: [[2019-01-01, 2019-02-01], [2019-11-02, 2019-11-20]] …
15 code-golf  date 

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