タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

16
MQTTサブスクリプショントピックの一致
バックグラウンド MQTT(メッセージキューテレメトリトランスポート)は、ISO標準のパブリッシュサブスクライブベースのメッセージングプロトコル(Wikipedia)です。 各メッセージには、次の例のようなトピックがあります。 myhome/groundfloor/livingroom/temperature USA/California/San Francisco/Silicon Valley 5ff4a2ce-e485-40f4-826c-b1a5d81be9b6/status Germany/Bavaria/car/2382340923453/latitude MQTTクライアントは、ワイルドカードを使用してメッセージトピックをサブスクライブできます。 シングルレベル: + 以降のすべてのレベル: # たとえば、サブスクリプションmyhome/groundfloor/+/temperatureは次の結果を生成します(太字の不適合): ✅MYHOME /地上階/リビング/温度 ✅MYHOME /地上階/キッチン/温度 ❌MYHOME /地上階/リビング/ 輝度 ❌MYHOME / firstfloor /リビング/温度 ❌ ガレージ /地上階/ 冷蔵庫 /気温 サブスクリプション+/groundfloor/#がこれらの結果を生成するのに対し、 ✅myhome / groundfloor / livingroom / temperature✅myhome / groundfloor / kitchen / brightness✅garage / groundfloor / fridge / …

4
バドミントンサーブの関連部分
前書き: 現在、バドミントンに関連する課題は他に1つしかないことがわかりました。私は自分でバドミントンをしているので(過去13年間)、バドミントンに関連するいくつかの課題を追加すると思いました。ここで2番目(最初のものはここにあります): チャレンジ: バドミントンに関するいくつかのルールは、 サーブは常にネット上で斜めに行われます。 常にネットに平行で最も近いラインの後にサーブする必要があります。 提供できるエリアは、シングル(1対1)かダブル/ミックス(2対2)かによって異なります。 シングル(1対1)の場合、下の画像の青い領域がサービスを提供できる場所です。つまり、これは後ろのパーツ​​を含み、横のパーツを除外しています。 ダブルス/ミックス(2対2)の場合、下の図の緑色の領域がサーバーに許可されています。つまり、これは後ろのパーツ​​を除いて、横のパーツを含んでいます。 あなたがサーブするとき、あなたは列に立つことができません。しかし、シャトルがラインの上に着陸した場合、シャトルはまだ中にあります。 ここでバドミントンフィールドのレイアウト: チャレンジルール: 入力: 2つの入力が与えられます。 シングルまたはダブル/ミックスのどちらを再生するかを示すもの(つまりブール値) あなたは(つまりから提供していたブロックを示すために何か[1,2,3,4]または['A','B','C','D']上の写真で使用されます)。 出力: 現在のサーブ(ネットを含む)に関連する行のみ。これFには、どこからTサーブするかを示すための複数の行と、潜在的にサーブする場所を示すための複数の行が含まれます。 実際には、指定されたエリアのどこからでもサービスを提供することが許可されていますが、サービスを提供する人は常に、ネットの中央に近いサーブエリアの隅に立っていると想定しています。F。そして、彼らは彼らが奉仕しなければならないエリアの四隅のいずれかに奉仕します、それはあなたがTsを配置する場所です。 ASCIIアートとして、バドミントンフィールド全体は次のようになります(数字を追加するので、自分で数える必要はありません)。 2 15 15 2 +--+---------------+---------------+--+ | | | | | 1 +--+---------------+---------------+--+ | | | | | | | | | | | | | | | | | | …

30
トーク通訳
「トーク」は、denisのtalk.tryitonline.netでの引用に対応して作成された、バロック化されたアキュムレータベースの言語です。 Waiting for someone to create an esolang called talk. 。「トーク」言語には4つのコマンドがあります。 00 アキュムレータが0の場合、アキュムレータを0に設定します。 01 アキュムレータが0の場合、アキュムレータを1に設定します。 10 アキュムレータが1の場合、アキュムレータを0に設定します。 11 アキュムレータが1の場合、アキュムレータを1に設定します。 入力: 入力は、標準のI / Oルールによって受け入れ可能な任意の入力メソッドを介して取得できます。 初期アキュムレータ値とプログラムの2つの入力があります。[00, 01, 00]必要に応じて、これらの2つの入力を1つの入力にマージしたり、入力を有効なコマンドに分割したりできます(たとえば、それらをリストとして使用するなど)。 出力: コマンドの実行が終了すると、アキュムレータは暗黙的に出力されます。 ルール: 入力は単一の文字列または文字リストです。 これはcode-golfなので、バイト単位の最も短い答えが優先されます。 数字または文字列/文字を使用します。 テストケース: 0 0001111101 -> 1 0 000100 -> 1 0 11001000 -> 0 リーダーボード これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。 回答が確実に表示されるようにするには、次のMarkdownテンプレートを使用して、見出しから回答を始めてください。 # Language …

28
文字列からビットへの移行
仕事 コードポイントが0〜128(排他的)である1つ以上のASCII文字の入力文字列が与えられた場合、以下を実行します。 各文字を7ビットのASCIIコードに変換します(ASCIIコードが7ビット未満の場合は、先行ゼロビットを挿入します) すべてのビットを連結します(これにより、は文字数である7*nビットになりますn) このビットストリームの各ビットについて、前のビットと異なる場合は1を出力し、それ以外の場合は0を出力します。最初の出力ビットは常に1です。 例 入力: Hi 出力: 11011001011101 説明: 文字列「Hi」にはASCIIコードがあります 72 105 これはビットです: 1001000 1101001 そして、遷移ビットインジケータ: 11011001011101 これはコードゴルフです。最小バイト数が優先されます。 テストケース テストケース1: Hello World! 110110010101110011010101101010110001110000111110000110000001011101101010101100110001 テストケース2: %% COMMENT %% 1110111111011111100001100010010100001010110101011010011101010011111110011000001101111110111 テストケース3(Luis Mendoへのクレジット): ## 11100101110010 Luis MendoがMATLで9バイトの最短のソリューションを提供してくれました!

14
配列は始まります
あなたの仕事は、数値の配列と実数を取り、配列のその点の値を返すことです。配列はから始まり、間隔でカウントされます。実際のところ、「インデックス」が指定された要素間を実際に補間します。例として:ππ\piππ\pi Index: 1π 2π 3π 4π 5π 6π Array: [ 1.1, 1.3, 6.9, 4.2, 1.3, 3.7 ] それだから、我々は次の式を用いてコサイン補間を使用することがありますので、必須の三角法を実行する必要があります。ππ\pi cos(私モッドπ)+ 12∗ (α − β)+ βcos⁡(私モッドπ)+12∗(α−β)+β{\cos(i \mod \pi) + 1 \over 2} * (\alpha - \beta) + \beta どこ: 私私iは入力「インデックス」です αα\alphaは「インデックス」の直前の要素の値です ββ\betaは「インデックス」の直後の要素の値です coscos\cosはラジアンで角度をとります 例 [1.3、3.7、6.9]、5.3の場合: インデックス5.3は1π1π1\piと2個のπ2π2\piにあるため、1.3はに使用されbefore、3.7はに使用されafterます。それを公式に入れると、次のようになります。 cos(5.3モッドπ)+ 12∗ (1.3 − 3.7 )+ …
10 code-golf  array 

4
エキスパートのようにNimボードを視覚化する
バックグラウンド でニムのゲーム、プレイヤーは「山」から「石」を削除交互:各ターンに、プレイヤーから1とすべての石の間で削除する必要があり、単一の杭。Nimの目的は、最後の石を取るか、または惨めなバリエーションでは、対戦相手に強制することです-ただし、戦略はほぼ同じであることがわかります。 ニムは楽しいバーゲームを作ります。「石」にはマッチ棒やコインを使うことができ、「山」は通常一列に並べられます。以下は、パイルが1、3、5、および7のクラシックなセットアップです。 Nimをプレイしたことがない場合は、このチャレンジに挑戦する前に、Ni​​mを試してみてください。これは、"Pearls Before Swine"と呼ばれるバージョンです。 戦略 Nimの最適な戦略は十分にトリッキーであり、ほとんどの素人は常に専門家に負けますが、バイナリ演算で簡単に説明できます。 ただし、メンタルバイナリXOR演算を実行するのは難しいので、幸運なことに、酔っているときでもリアルタイムで実装しやすい正しい戦略を視覚化する同等の方法があります。 手順は3つだけです。 各行の「ストーン」を2の累乗のサイズのサブグループに精神的にグループ化します。可能な最大のサイズから始めます。ほとんどのゲームでは8、4、2、1で十分です。 各グループを別の行のツインと一致させて、すべてのグループがペアになるようにします。 これが不可能な場合は、ペアになっていない "石"を1行から削除します(これは常に可能です-理由はWikipediaのリンクを参照してください)。これにより、手順2.が可能になります。 または、別の言い方をすると、「1つの山からいくつかの石を削除して、山を2の累乗にグループ化すると、すべてのグループが別の山のグループとペアになる場合があります。」2の大きな累乗を小さな累乗に分割できないことに注意してください。たとえば、8石のラインを4の2つのグループにグループ化することはできません。 たとえば、上記のボードを視覚化する方法は次のとおりです。 このボードは完全にバランスが取れているので、相手を先に動かしたいでしょう。 チャレンジ Nimの「パイル」のサイズを表す正の整数のリストを指定すると、専門家が見たNimボードのプレーンテキストの視覚化を返します。 有効な視覚化を構成するものは、例によって最もよく説明されますが、次のことを行う必要があります。 各「2の累乗サブグループ」とそのペアに個別の文字を割り当て(ペアになっていないサブグループは対象外)、その文字を使用してサブグループとペアの両方の「石」を表します。 ハイフンを使用して、ペアになっていない「ストーン」(つまり、エキスパートが通常のプレー時に削除するもの-不快ではない-Nim)を表します-。 有効な視覚化を実現する方法は複数あり、すべて有効です。いくつかのテストケースを見てみましょう。 テストケース 入力:1、3、5、7 可能な出力1: A BBA CCCCD CCCCBBD オプションで、文字の間にスペースを入れたり、行の間に空白行を入れたりできます。 可能な出力2: A B B A C C C C D C C C C B B D 入力:1、2、3、4、5、6、7、8、9、10 文字の順序と選択は好きなようにすることができます: …

15
複素数のべきを計算する
ランダウン 入力xおよびyを指定して、複雑な操作を実行し、対応する結果を出力します。 プログラムのしくみ z = x + yiという形式の入力xとyが与えられると、z i-zを見つけます z i-zの絶対実数値が絶対虚部より大きい場合、実部を出力します。逆も同様です。両方の値が等しい場合は、値の1つを出力します。 例 x: 2 y: 0 したがって: z = 2 z^(i-z) ~= 0.192309 + 0.159740i 実数部は虚数部よりも絶対値​​が大きいため、プログラムは 0.192309 その他の例 z = 1+i >> 0.5 z = i >> 1 z = 0.5 >> 1.08787 z = -2+8i >> 2.22964E7 z = …

7
Anagram Quines(強盗のスレッド)
これは警官と強盗の挑戦です。警官のスレッドはここにあります 強盗としてのあなたの課題は、警官のスレッドから出力を取得し、プログラムとして実行したときに提供された元の出力を出力するアナグラムを見つけることです。 勝者は、この質問で最も有効なクラックを持つ人になります。 ルール 提供されたプログラムで安全とマークされた回答を解読することはできません。 警官が意図した解決策がある言語を提供する場合、その特定の言語でそれを解読する必要があります。彼らが選択しない場合、競合する言語で解読する可能性があります。 クインの標準ルールが適用されます。 クラックは完璧なクインであってはなりません。つまり、正確なソースを出力するのではなく、その順序を変更する必要があります(順序は警官によって提供されます)。

6
クインを転置する
このquineバリアントでは、プログラムは、左上から右下に対角線を横切って転置されたソースコードを出力する必要があります。例えば: あなたのプログラム オン 4行 出力 yof ono u u r r p l r i o n g e r s a m 出力の空白は任意ではありません。スペースは2つの状況で表示されます。元のスペース(4列目の間rなどl)と、文字を埋め込む必要がある場合(1列目のすべてのスペースなど)の両方が必要で、スペースはどこにも表示できません。その他の出力。 出力の単一の末尾の改行はオプションで無視できます。ソースコードの末尾の改行は出力に影響を与えません。ソースコードの先頭の改行は、上記の例のように処理する必要があります。改行ではないすべての文字は、幅が1列、高さが1行であると想定します。 ソリューションには、少なくとも2つの改行以外の文字がそれぞれ2行ある必要があり、独自の転置であってはなりません(出力をソースと同一にすることはできません)。 quines浮気 URLから自分のソースコードを含むファイルから読み込まれ、プルデータを、利用ビルトインをquining、というように許可されていません。 これはコードゴルフです。バイト単位の最短コードが優先されます。
10 code-golf  quine 

17
2つのリストの共通部分を設定する
目標は、整数の2つのリストの積集合を計算することです。共通部分は、両方の入力リストで少なくとも1回見つかった整数の順序付けされていない一意のグループとして定義されます。 入力 入力は任意の形式(関数パラメーター、stdioなど)にすることができ、整数の2つのリストで構成されます。多くの場合、負でない数の整数が含まれている(つまり、並べ替えられていない、重複が含まれている、長さが異なる、空であるなど)以外は、各リストについて何も想定していません。各整数は、言語のネイティブな符号付き整数型に適合し、1桁以上の10進数であり、符号付きであると想定されています。 入力例: 1 4 3 9 8 8 3 7 0 10 1 4 4 8 -1 出力 出力は、2つのリストの共通部分を任意のフォーマット(戻り値、stdioなど)に設定した整数のリストのようなものです。出力をソートする必要はありませんが、常にソートされる実装を提供することはできます。出力は、順序付けされていない有効なセットを形成する必要があります(たとえば、重複する値が含まれていてはなりません)。 テストケースの例(出力の順序は重要ではないことに注意してください): 最初の2行は入力リスト、3行目は出力です。(empty)空のリストを示します。 (empty) (empty) (empty) 1000 (empty) (empty) 3 1 2 4 3 1 1 1 1 3 3 1 -1 0 8 3 3 1 1 3 1 …

1
AESのブロックの復号化
今日の目標は、AESを使用して秘密のメッセージを解読することです。暗号文とキーを指定すると、メッセージを復号化して印刷します。 プログラムはどの言語でもかまいません。stdinの入力で実行され、stdoutの出力が正しいかどうかがチェックされます。 stdinの入力の最初の行は、16バイトでエンコードされた16バイトのキーになります。stdinの入力の2行目は、16バイトでエンコードされた16バイトの暗号文です。 プログラムの出力は、指定された鍵でAES-128を使用して暗号文を復号化した後の16バイトメッセージでなければなりません。ASCIIオクテットとして解釈された結果を出力する必要があります。解読後の結果はすべて有効なASCIIであると想定できます。 AESを実装するライブラリ/組み込み機能を使用することはできません。このような機能を使用して、hex / binary / ASCIIエンコーディング間で変換できます。 バイト単位の最短コードが優先されます。 入力と出力の例: bd8ab53f10b3d38576a1b9a15cf03834 02c0ee126cae50ba938a8b16f0e04d23 明日攻撃する。 そしてもう一つ: f4af804ad097ba832906db0deb7569e3 38794338dafcb09d6b32b04357f64d4d おめでとう。

5
アラクの最短のゲームを書く
Alakは数学者AK Dewdneyによって発明され、1984年の本Planiverseに記載されています。アラクのルールは簡単です: Alakは、11スロットの1次元ボードでプレイする2人用のゲームです。各スロットは一度に最大で1つの部品を保持できます。「x」と「o」の2種類のピースがあります。xは1つのプレーヤーに属し、oはもう1つのプレーヤーに属します。ボードの初期構成は次のとおりです。 xxxx___oooo プレイヤーは順番に移動します。各ターンで、各プレイヤーは一度に1つの駒のみを移動できます。プレーヤーは自分のターンに追い越すことはできません。プレーヤーは自分の駒のいずれか1つを次の空いているスロットの右または左に移動できます。これには、空いているスロットを飛び越える必要がある場合があります。プレーヤーは、駒をボードの側面から移動することはできません。 移動によって、対戦相手の駒が両側に2つの駒の可動子の色で囲まれているパターンが作成された場合(空いている空白のスロットが介在しない)、それらの囲まれた駒はボードから削除されます。 ゲームの目的は、対戦相手の駒をすべて取り除くことです。この時点でゲームは終了します。all-but-oneを削除すると、ゲームも終了します。これは、対戦相手が1つの駒であなたを囲むことができないため、とにかく数回の移動で常に負けるからです。 私はこのゲームをオンラインで見つけ、疑問に思っていました:ゴルフはできますか? ゴルフのルール コードは、ゲーム内のすべてのルール、キャプチャの処理、適切な移動などに従う必要があります(ボットを追加する必要はありませんが、両方のプレイヤーを何らかの方法で制御し、一方のプレイヤーを人間にする必要があります)。 入力は、タイルXのタイルをYに移動するか、終了する必要があります。たとえば、1 4「この作品をタイル1からタイル4に移動」と言うことができます。- をquit使用しても、プログラムは終了します。また、移動が無効であるかどうかを確認する必要があります(ボードの外に出るか、空いているスペースを横切ってタイルのペアでないメッセージを送信または送信する必要がある場所に移動するか、)。ControlCquit 優勝選手と無効なため出力がでなければならないP1 WINS、P2 WINSとINVALIDそれぞれ。(これらはすべて7文字です。) 出力はボードを示す必要があります。それだけで十分です。 番号付きのタイルやその他のピースなどの補助具を使用するかどうかは関係ありません。 チャレンジは次の場合に終了します。 1つの回答で50票を獲得 3週間、1つの回答が上位投票されたままになり、その期間に他の回答は投稿されませんでした チャレンジには少なくとも3つの答えがあります(そのため、実際の競争があります)。 ゲームのルール 左側のプレーヤーが最初にスタートする必要があります。 一度に正方形を占めるのは1個だけです。それが空いているスペースにぶつかるまで、ピースを左または右に移動します。ボードは折り返されず、占有されていない領域を移動することはできません。例えば: xoo__o。ここで、x移動権はボードをに変更し_oox_oます。 xxooo_。ここで、左端xはyield _xoooxに移動し、os をキャプチャしてを残し_x___xます。 x__oox。ここでは、osはキャプチャされていません(まだギャップがあります)。空いているスペースを移動できないため、キャプチャはできません。x間には他の部分(残しがないので、左側のは、1つのスペースを移動することができます_x_oox)。 グループが対戦相手の駒に囲まれている場合、複数の隣接する駒を一度にキャプチャできます。例えばx_ooxには_xoox、両方のキャプチャしますo秒とにつながります_x__x。 移動後の場合は、最初に相手の駒をキャプチャしてから、自分の駒を削除する必要があるかどうかを確認します。2つの例を見てみましょう。 o_oxxにoxox_。1つ目oは2つ目がキャプチャされるox_x_ため、1 つ目はxボードに残ります。 o_ooxにoxoo_。今回は、osはキャプチャされないため、x代わりにがキャプチャされます。 ピースが1つしかない場合は、1つではキャプチャできないため、ゲームは終了します。 ゲームを始めよう!あなたが思いつくものを見るのを楽しみにしています。

6
メニューのキーボードショートカットを生成する
メニューのショートカット 従来、ユーザーメニューには、などのキーボードショートカットを使用してアクセスしAlt + (a letter)たり、すべてのテキストボックスがフォーカスされていない場合(Gmailスタイル)に文字を入力するだけでアクセスしたりできます。 あなたのタスク 入力としてメニューエントリが与えられた場合、タスクは各メニューエントリに適切なショートカット文字を付与することです。 一連の単語-メニューエントリ(文字列の配列または同等の言語として)を受け入れ、辞書またはハッシュマップを1文字からメニューエントリに返す関数またはプログラムを記述します。 パラメータを使用して値を返すか、STDINを使用して結果をSTDOUTに出力できます。グローバル/スコープ変数がすでに入力されていると想定することはできません。 適切な文字を決定するアルゴリズム 基本的にそれは単語の最初の利用可能な文字です。以下の仮定と例を参照してください。 すべてのエントリの文字が利用できない場合、ショートカットはになります(a letter) + (a number)。エントリからどの文字を選ぶかは任意です。番号は0から始まり、1ずつ増加する必要があります-すべてのショートカットが一意になるようにします。以下の3番目の例を参照してください。 仮定 入力はセットになります。つまり、繰り返しはなく、すべてのエントリは一意です。 入力の長さは、負でない整数(言語のMAX_INTまで)にすることができます。 大文字と小文字の区別:入力では大文字と小文字が区別されます(ただし、大文字と小文字を区別しない場合は一意のままです)。結果には、元のエントリと元の大文字小文字が含まれているはずです。ただし、出力ショートカット文字は大文字と小文字を区別しません。 すべての入力単語が数字で終わるわけではありません。 「邪悪な入力」はテストされません。「邪悪な入力」とは、特定の文字のカウンターを10回以上インクリメントする必要があるようなものです。 例 以下の例はJSONですが、配列と辞書に相当する言語を使用できます。または、STD I / Oを使用している場合は、入力と出力に読み取り可能な形式(csv、さらにはスペースなど)を使用できます。区切り値)。 1。 Input: ['File', 'Edit', 'View', 'Help'] Output: {f:'File', e:'Edit', v:'View', h:'Help'} 2。 Input: ['Foo', 'Bar', 'FooBar', 'FooBars'] Output: {f:'Foo', b:'Bar', o:'FooBar', a:'FooBars'} 3。 …
10 code-golf  string 

14
2点(x、y)からの線形関数ソルバー
タスク (x、y)の形式で座標の2つのタプル引数を取り、それぞれの線形関数を(a、c)の形式で返す関数L()を記述します。ここで、aはx項とcの係数です。 y切片です。 入力はx軸に垂直な線ではなく、2つの入力は別々の点であると想定できます。 得点 これがコードゴルフです:最短プログラムが勝ちます。 注意:基本的な演算子(+、-、/、*)以外の数学関数は使用しないでください。 例 これが、Pythonでの私の理想的なソリューションです。 def L(Point1, Point2): x = 0 y = 1 Gradient = (float(Point1[y]) - float(Point2[y])) / (float(Point1[x]) - float(Point2[x])) YIntercept = Point1[y] - Gradient * Point1[x] return (Gradient, YIntercept) 出力: >>> L( (0,0) , (1,1) ) (1.0, 0.0) >>> L( (0,0) , …
10 code-golf 

3
イオでのゴルフのコツ
イオでゴルフをするための一般的なヒントはありますか?私はコードゴルフの問題全般に適用でき、少なくともある程度はIoに固有のアイデアを探しています(たとえば、「コメントの削除」は回答ではありません)。回答ごとに1つのヒントを投稿してください。
10 code-golf  tips 

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