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

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

4
映画のシーンを選択する
前書き 最後に、映画会社はあなたの映画に資金を提供しています。彼らはあなたに最大限の予算を与え、またあなたの映画の実行時間を設定しました。 これで、プリプロダクションから始めることができます。すでに多くのシーンが計画されていますが、それらのすべてが予算に収まるわけではなく、映画も長すぎます。ただし、各シーンの重要性は知っています。あなたの目標は、映画が高すぎず、長すぎず、平凡であるシーンを選択することです。 入力 あなたが得るrunning timeとbudgetスタジオが承認しました: [25, 10] あなたはを含むシーンのリストを持ってrunning time、costsそしてimportanceそれらのそれぞれについて: [ [5, 2, 4], [7, 1, 3] ] 配列が機能しない場合は、最適な別の入力形式を選択してください。時間は分単位です。予算と費用は、数百万のランダム通貨です。重要度は〜の範囲です[1–9]。すべての数値は整数です。 出力 次の事項について、ムービーに含めるシーンのリストを出力します。 の合計importanceが最大化されます。 コストは予算を超えません。 長さは、承認された実行時間の±5分以内です。 シーンの順序は重要ではなく、保存する必要はありません。 数値のリストまたは配列を出力できます。出力には、ゼロまたは1ベースのインデックスを含めることができます。 [0,2,5] – 0, 2, 5 – 0 2 5 [1,3,6] – 1, 3, 6 – 1 3 6 複数のソリューションが任意の入力に適用される可能性があります。必要なのは1つだけです。 制約 シーンを短くしたり、安くしたりすることはできません。 各シーンは1回のみ含めることができます。 必要条件 プログラムは、映画の実際の長さの時間内に終了する必要があります。 …

3
箱を閉めてくれ
このチャレンジのインスピレーションは、投稿の時点でとんでもなく明白なはずです。 タスク Shut the Boxスタイルのプログラム(関数、プログラムではない)を作成する必要があります。シャットダウンボックスの基本は次のとおりです。 プレイヤーは、1-9のラベルが付いたレバーのセットを回して、ボックスを閉じようとします。彼らはレバーをひっくり返すことによってそうしなければなりません。各ターンのイベントのシーケンスは次のとおりです。 レバーの現在の位置が表示されます。 新しいゲームでは、レバーの位置はとして表示されるはず123456789です。 シャットレバーを使用するゲームでは、シャットレバーはすべてとして表示され-ます。たとえば、1、5、および9が閉じられているゲームでは、出力はになります-234-678-。 di(c)eは(ロールバックされます)。 レバー7、8、および9がすべてオフの場合、1つの6面ダイスのみがスローされます。それ以外の場合、2つの6面ダイスがスローされます。 プレーヤーは、反転させたいレバーの数を選択するよう求められます。 プレーヤーが9より大きい数値または0より小さい数値を選択した場合、ゲームは終了します。 プレイヤーが既に閉じたレバーを選択した場合、ゲームは終了します。 プレーヤーはその数のレバーを選択します。 レバーの合計がスローされたdi(c)eの値と等しくない場合、ゲームは終了します。 すべてのレバーが閉じられている場合、おめでとうございます、あなたは勝ちます。それ以外の場合は、手順1に戻ります。 プログラムの規則 各ターンで、レバーの現在の位置を出力する必要があります。 フレーズとともにロールの値を出力する必要がありますYou rolled:(スペースに注意してください)。 フレーズで切り替わるレバーの数を入力する(そして待つ)必要があります(How many levers to flip:スペースに注意してください)。 フレーズで指定されたプレーヤーと同数のレバーを要求する(そして待つ)必要があります(Which lever to flip:スペースに注意してください)。 指定されたレバーを反転する必要があります。 いずれかの時点でゲームが終了した場合、を出力する必要がありますGame Over。 プレーヤーがレバーを開かずにターンを終了した場合、出力する必要があります You win! サンプルゲーム 123456789 You rolled: 5 How many levers to flip: 5 Which lever to …
12 code-golf  game  random 

1
ASCII六角形グリッドの描画とラベル付け
で、私の前の課題、私はほとんど手で(Vimのビジュアル・ブロックモードの助けを借りて)最初の図を描きました。しかし、確かにもっと良い方法があるはずです... 幅と高さの2つの次元の入力が与えられた場合、ASCIIアートでこれらの次元を持つ六角形のグリッドを出力します。 これは、イントロで参照されるダイアグラム(マイナーな編集を含む)であり、入力の出力になりますwidth=7, height=3。 _____ _____ _____ / \ / \ / \ _____/ -2,-1 \_____/ 0,-1 \_____/ 2,-1 \_____ / \ / \ / \ / \ / -3,-1 \_____/ -1,-1 \_____/ 1,-1 \_____/ 3,-1 \ \ / \ / \ / \ / \_____/ -2,0 \_____/ 0,0 \_____/ …

1
テキストリックロールを注入する
リックロールは地球上で最大のミームであるため、あなたは[ルールを知っており、私もそうしている]疑うことを知らない読者をテキストでリックロールできる最短のコードを書くことです。してみましょう[あなたをダウン]の文字、句読点、およびスペースを含む入力テキストがあります。いつでも[嘘とあなたを傷つける]最初の二つのスタンザからフレーズがテキストで表示されます... We're no strangers to love You know the rules and so do I A full commitment's what I'm thinking of You wouldn't get this from any other guy I just wanna tell you how I'm feeling Gotta make you understand Never gonna give you up Never gonna let you …
12 code-golf  string 

5
URL短縮サービスを実装する
URLが長すぎます。そのため、URLを短縮するアルゴリズムを実装する必要があります。 私。URLの構造 URLには、ドメインとパスの 2つの主要部分があります。ドメインは、URLの最初のスラッシュの前の部分です。URLにプロトコルが含まれていないと想定できます。パスは他のすべてです。 ii。ドメイン URLのドメインは次のようになりますxkcd.com meta.codegolf.stackexcchhannnge.cooom。各パートは、ピリオドで区切られています。たとえば、blag.xkcd.comでは、パートは「blag」、「xkcd」、および「com」です。これはあなたがそれで何をするかです: 3つ以上の部分が含まれている場合は、最後の2つを脇に置き、残りの部分の最初の文字を連結します。 次に、それを最初の文字と最後から2番目の部分に連結します。 ピリオドと、最後から2番目の部分の2番目と3番目の文字を追加します。 最後の部分を破棄します。 iii。パス パスは次のようになります/questions/2140/ /1407/。前と同様に、「パーツ」はスラッシュで区切られています。パス内の各部分について、次を実行します。 スラッシュを追加 完全に10進数で構成されている場合は、数値として解釈し、36進数の整数に変換します。 それ以外の場合は、パーツの最初の文字を追加します。 最後に、スラッシュを追加します。 iv。その他 これはcode-golfなので、最短のコードが優先されます。 パスは空でもかまいませんが、URLは常にスラッシュで終わります。 プロトコルが存在することはありません(例えばhttp://、file:///) ドメイン内の部分が2つ未満になることはありません。 標準の抜け穴が適用されます。 例 In:xkcd.com/72/ Out:x.kc/20/ In:math.stackexchange.com/a/2231/ Out:ms.ta/a/1pz/ In:hello.org/somecoolcodeintrepreteriijjkk?code=3g3fzsdg32,g2/ Out:h.el/s/

4
スムーズ対チャンキー対ブロークンスクイーグル
Chunky vs. Smooth Stringsに基づいています。 /\_/\/\__/\/\/\/\_/\_/\あなたが本当に退屈しているとき、波線はキーボードで作るのが楽しいです。しかし、すべての波線が平等に作成されるわけではありません。いくつかの波線はのよう\___/に滑らかで、いくつかはのようにずんぐりしてい/\/\/\/\ます。他のものはまったく壊れています////_\\\ Nキャラクターのあらゆる波線の中に、波線N-1ジャンクションがあります。各波型ジャンクションは、次の3つのタイプのいずれかに分類されます。 スムーズ(角度>「90度」): \_ __ _/ 分厚い(角度=「90度」) /\ \/ 壊れた(接続しないもの) // \\ /_ _\ レッツは、定義滑らかにし、滑らかで接合の割合であることをchunkinessと壊れた同様に定義します。各値の範囲は0〜1です。波線の滑らかさ、チャンクネス、および破損の合計は、常に1に等しくなります。 たとえば、波線に/\/\\_//\_は3つの滑らかなジャンクション、4つの分厚いジャンクション、2つの壊れたジャンクションがあります。このように0.3333滑らかで、0.4444分厚い、0.2222壊れています。 空の文字列と1文字のみの文字列には未定義の値があり、すべての入力は少なくとも2文字の長さになります。 チャレンジ 任意の長さの波線を取り込んで、その滑らかさ、チャンクネス、および破損の値のいずれか2つを出力するプログラムを作成します。 STDIN、コマンドライン、または文字列引数を介した入力を使用して、プログラムまたは関数を作成できます。 入力は少なくとも長さ2以上で/\_、オプションの末尾改行を含む文字のみで構成されていると想定できます。 2つの浮動小数点数を、小数点以下4桁以上で丸めまたは切り捨てて印刷(または関数の場合は戻り)します。真の値である場合は2/3、許容値は、いずれかの間の値が含ま0.6666と0.6667、のようにも物事を0.666637104。正確な値がの場合、1/3含む回答0.3333はすべて有効です。後続のゼロは省略できますが、値が1より小さい場合は、先行のゼロを省略できます。 必要に応じて、3つの値の任意のペアを出力します。必ず、2つと順序を指定してください。 バイト単位の最短コードが優先されます。 例 /\/\\/\//\\→滑らかさ0、分厚さ0.7、破損0.3 _/\\_/\\/__/\\\//_→滑らかさ0.29411764705、分厚さ0.29411764705、破損0.41176470588 //\\__/_\/→滑らかさ0.3333333、分厚さ0.2222222、破損0.4444444 おまけの質問:なめらか、チャンキー、壊れた波線のどちらが好きですか?

1
フロッガーソルバーを作成する
🐸🐸 9x9グリッドで単純化されたフロッガーゲームの最適なソリューションを常に見つけるには、最短のプログラムを作成する必要があります。 コース要素: L-ログ(長さ:3-4)。ログに飛び乗ると、ログが表示されます。 V -車両(長さ:1-2) 速度(1-2):列の左側には、列の要素が移動する速度が表示されます。 スペース:要素間には常に少なくとも2つのスペースがあります。 方向:車両セクションとログセクションの両方で、各レーンの移動方向が左右に交互に変わります。 コース構成: 資本であれば、それは正しく行きます。小文字の場合、左に移動します。行のすべての要素は同じ方向に進みます。要素の一部が画面から消えるとすぐに、画面の反対側に表示されます。 最初の行はセーフゾーンです。カエルはで始まり、F常に同じ場所です。 次の3行は、車両のある道路です。 次の行はセーフゾーンです。 次の3行は、ログを含む水(水に触れる==死)です。 Wレーンに到達すると、勝ちます。 カエルが死ぬと F プレーヤーコントロール: L -左 R - 正しい U -アップ D -ダウン W - 待つ 移動すると、別のフレームが通過します。(フレームは、移動と同時にではなく、移動後に通過することに注意してください。)プログラムは、などの一連の文字として最適なソリューションを提供する必要がありますURWUUL。コースに解決策がない場合、プログラムはを出力する必要がありますN。 例:(これらを手作業で行ったため、それらが最適なソリューションであるかどうかはわかりません。) 0WWWWWWWWW 1 lll 2 LLLL 2 llll 0 1 vv vv 1 V V 1 vv 0 …

10
9ニンジャの死
チャットでのこの会話に触発されました。 このチャレンジの目標は、忍者をエミュレートし、彼が何人の死者を残したかを数えることです。 スペック あなたの忍者は、残り9人で始まります。彼はまた、入力として不可欠な開始健康状態を取得します。 次に、彼は入力として、自分の健康を変える人生の出来事のリストを受け取ります。これらは、負、正、またはゼロの整数です。 いずれかの時点で、彼の健康がゼロ以下に達すると、彼は命を失い、彼の健康は最初の健康に戻ります。 あなたのプログラムは、彼が残した死亡者数を報告すべきです。残りがゼロ以下の場合は、dead代わりに出力する必要があります。 これはcode-golfなので、バイト単位の最短コードが勝ちです! テストケース 3, [] -> 9 100, [-20, 5, -50, 15, -30, -30, 10] -> 8 10, [-10, -10, -10, -10] -> 5 10, [-10, -10, -10, -10, -10, -10, -10, -10, -10] -> dead 0, [] -> dead 0, [1] -> dead …

22
10 9 8 7 6 5 4 3 2 1…印刷2016
Puzzlingでの私の挑戦へのスピンオフとして、あなたの目標はを出力すること2016です。 ルール: 10 9 8 7 6 5 4 3 2 1その順序で番号を含める必要があります。彼らは、個々の整数として使用されるか、または(同様に一緒に連結することができる1098)が、10に分離しなくてもよい1し、0-何文字(単数または複数)の数字の間に存在しなくてもよいです。一部の言語で10は、実際には整数リテラルを表すとは限らないことに注意してください10。 コードには、他の数値や事前定義された数値変数や定数Tを含めることはできません(したがって、Pythでは数値定数であるため許可されません)。 数値を使用して計算 する必要があります2016。2016必要な数に対して操作を実行せずに(たとえば、アルファベット文字のみで構成されるエンコードされた文字列をデコードして)出力することは許可されていません。出力2016(例えば、小片に20その後、16また許可されていません)。数値で構成される単一の出力が必要です2016。 最小バイト数の有効な答えが勝ちです。

1
2Bのインタープリターを作成する
通訳を書く 2Bの 好き David Cattの難解な言語2Bが。各セルがバイトの独立したテープ(「サブテープ」)であるテープにメモリが保存されています。通訳を書いてください! 言語仕様 公式の仕様はここにあります。この仕様で"は、範囲内の数値0-9(0と解釈される10)を_意味し、任意の長さの文字列を意味します。各セルはの範囲の値を格納し、0-255オーバーフロー/アンダーフローはBFと同じように折り返します。(ありがとう@MartinBüttner)。テキストを数字0-255に変換するには、ASCIIコードを使用します。私はこれについて詳細を見つけることができないので、テープの長さは255最小であるべきだと言いますが、そうでない場合は編集してください。 +-------------+----------------------------------------------------------------------------------------------------------------------------------------+ | Instruction | Description | +-------------+----------------------------------------------------------------------------------------------------------------------------------------+ | 0 | Zeroes the current cell and clears the overflow/underflow flag. | | { | If the current cell is zero, jump to the matching }. | | } | A placeholder for the { …

3
文を作り直す
この課題は2つの部分で構成されています。勝者は、総バイト数が最も少ないソリューションになります。両方の課題に同じ言語を使用する必要があります。 パート1: 入力として有効な単語のみを含む文を受け取り、使用する文字のリスト、各文字の使用回数、元の文の各単語の文字数を出力する関数またはプログラムを作成します。このプログラムからの出力は、次のプログラムへの有効な入力でなければなりません(出力されたとおり) 例と詳細なルールをさらに下に追加します。 パート2: 最初のプログラムからの出力を入力として使用し、この英単語のリストを使用して、出力からの情報を使用して文を再作成する関数またはプログラムを作成します。文は元の文と同じである必要はありません。 詳しくは。ルールと制限: パート1: 最初の入力は、引用符の有無にかかわらず、関数の引数として、または角括弧の有無にかかわらず、STDINからの任意の適切な形式にすることができます。 入力文には、最後のピリオド/ドットを除き、句読点や特殊文字は含まれません。ピリオド記号を除き、入力に含まれるすべての文字は単語リストに含まれます。 文の最初の文字は大文字になり、残りは小文字になります。 パート2の出力は、元の文と同じ大文字で開始する必要があります(したがって、入力を小文字に変換することはお勧めしません(ただし、OK)。 出力は任意の適切な形式にすることができます。 出力を次のプログラム/機能に直接コピーアンドペーストできる必要があります コピーアンドペーストの際に変更を加えることはできません。出力全体を部分的にではなく、全体としてコピーして貼り付ける必要があります。 たとえば、アルファベットのすべての文字、または使用されているもののみのヒストグラムを出力できます(一般的に、パート2を完了するために必要なものは何でも) 複数のオカレンスが繰り返される文字のリストを出力することはできません。例えば、The queue出力が得られないことができますTeeehquu (3,5)、それは次のようになりますTehqu, (1 3 1 1 2),(3 5)。 パート2: プログラム/関数は、パート1からの入力をそのまま受け入れる必要があります(1つの例外、入力としてファイル名を使用することに関する以下のコメントを参照してください)。 入力を解析するために括弧、引用符などが必要な場合、これらはパート1の出力の一部である必要があります。 単語リストはここにあります。 単語リストは、ローカルに保存するかw.txt、URLから取得できます。urlは5バイトとしてカウントされるため、url-shortenerは必要ありません。 プログラムはSTDIN(私はこれが信じているから、入力として名を読まずに、ファイルを開くことができない場合である少なくともPythのためのケースだった)、その後、ファイル名は別々の入力引数として撮影することができます。 出力は、ピリオドとオプションの改行で終わる文(有効な単語のリスト)のみである必要があります。 出力には、パート1の元の文と同じ文字数の単語が含まれている必要があります(正しい順序で) 元の文で使用されたすべての文字は、新しい出力で使用する必要があります。 文は、元の入力文と同じ大文字で始まり、ピリオドで終わる必要があります。 両方の部分: どちらの部分も実行に2分以上かかることはありません(ソリューションに到達するまでランダムに単語を選択することは受け入れられません)。 上記の規則を使用すると、まったく同じ文が再現される可能性がかなり高くなりますが、これは必須ではありません。 例: 以下の例では、いくつかの異なる入力および出力形式が示されています。さらに多くが受け入れられます。 パート1: 入力: Zulus win. 出力タイプ1: Z i l n s …

12
小数の説明
の形式で小数を指定する<float>, <precision>と、フロートの小数部分(つまり小数部)のグラフィック表現を描画します。例: 入力:6.75, 4、出力: 6||| 7 ---- 6.75(入力からの最初の数)は説明する数、4(入力からの2番目の数)はパイプの下のダッシュの数です。 6床は6.75、7天井は6.75。パイプの数はdecimal part of first input number * second input numberです。 入力:10.5, 6、出力: 10||| 11 ------ 入力:20.16, 12、出力 20|| 21 ------------ .16 実際には1.92本のパイプを使いますが、1.92本のパイプを描くことができないので、2本にします。 入力:1.1, 12、出力: 1| 2 ------------ .1 この場合は1.2パイプなので、1パイプにフロアリングされます。 また、エッジケース。入力:(5, 4つまり、数値は整数です)、出力: 5 6 ---- 説明する数値は正の浮動小数点数であり、言語能力によってのみ制限されます。 精度の数値は2より大きい偶数の整数です(つまり、必要な最小精度は4です)。任意の大きさにすることもできます。 > = n.5パイプはn + 1に切り上げられます(つまり、1.5は2に丸められ、2.5は3に丸められます)。<n.5パイプはnに丸められます(つまり、1.4は1に丸められ、2.4は2に丸められます)。 あなたの言語にとってより便利な場合は、入力を配列として取ることができます[6.75, …

5
隣接文字テスト
パスワード強度テストの1つの側面は、キーボード上の隣接する文字の実行です。このチャレンジではtrue、文字列に隣接する文字の実行が含まれている場合に返すプログラムを作成する必要があります。 何が隣接する文字の連続としてカウントされますか? この簡易版のパスワード強度テスターの場合、隣接する文字の連続は、QWERTYキーボード上で単一方向(左、右、上、または下)で互いに隣り合う3文字以上です。この課題のために、キーボードのレイアウトは次のようになります。 1234567890 QWERTYUIOP ASDFGHJKL ZXCVBNM 上記の図でQは、下にある1が下に2はないので、文字列を含む文字列1qaまたはその中の文字列はaq1、プログラムを返しますがtrue、返し2qaません。 入力 チェックするパスワード文字列。文字[0-9a-z]または[0-9A-Z](選択した)のみが含まれます。 出力 パスワードに隣接するキーの実行が1つ以上含まれている場合、プログラムは真偽値を返す必要があります。 例 次の入力はtrueを出力するはずです。 asd ytrewq ju7 abc6yhdef そして、これらの入力はfalseを出力するはずです: abc aaa qewretry zse qwdfbn pas ルール 回答は完全なプログラムまたは機能である場合があります。 標準の抜け穴は許可されていません。 これはcode-golfで、最低スコア(バイト単位)が勝ちます!

3
ロックとキーのゲーム
1-nの番号が付いたn個のボックスがあります。各ボックスはロックされており、対応する1つのタイプのキー(1〜nの番号も付けられている)のみで開くことができます。これらのキーはボックス内にランダムに散らばっていて(1つのボックスには任意の数のキーがあり、1つのキーには任意の数の重複があります)、すべてのボックスが閉じられます。宝物(番号0)も多くのボックスでロックされています。 すべての宝物を回収するために鍵屋を雇いました。彼は、開いた箱ごとに料金を請求します。キーが既に利用可能なボックスを開くのに料金はかかりません。 入力は各ボックスの内容です。入力の形式を決定できます。 宝物を入手するのに必要な最低コストを出力します。 ノート アルゴリズムには時間がかかる場合がありますが、それは無関係です。 最短のコードが優先されます。 無効な入力を気にする必要はありません。 サンプルデータ ここで、行iはボックスiに存在するキーを表します。 入力 2 0 3 4 0 5 6 0 6 0 出力 1 入力 2 0 3 0 4 0 6 5 0 出力 3 入力 2 4 0 3 0 1 0 6 5 0 出力 2 入力 1 …

2
〜ATHインタープリターを作成する
人気のあるウェブコミックHomestuckは、~ATH宇宙を破壊するために呼び出されるプログラミング言語を使用しています。このゴルフの挑戦は、私たちの存在を全滅させるプログラムを書くことではありませんが、もっと面白くない(あまり面白くない)エンティティを破壊します:variables。 ~ATH( "til death"と発音します。~ath"tilde ath"はどのように機能するかを確認してください)は、という変数を作成しTHIS、でコマンドを実行しEXECUTE、でプログラムを終了することで機能しTHIS.DIE()ます。Homestuckでの言語の使用に関するWikiページは、ここにあります。この課題の目標は、~ATH通訳を作成することです。 挑戦のために、私は~ATH実際には存在しないいくつかの詳細を作成しますが、それを(ある程度)有用にします。 この言語は、で宣言されている整数でのみ機能しますimport <variable name>;。変数は自動的に値0に設定されます。一度にインポートできる変数は1つだけです。 変数xは、書き込みによってコピーできますbifurcate x[y,z];。これにより、変数が削除されx、同一の変数yおよびに置き換えられますz。削除された変数と同じ名前の変数を作成できないことに注意してください。基本的に、変数の名前が変更され、別の名前の変数のコピーが作成されます。これは馬鹿げた機能のように見えますが、愚かさはHomestuck に非常に深く根付いています。 コードを実行するプログラムを記述するための構文xは~ATH(x){EXECUTE(<code>)}です。2つの変数に対して同時にコードを実行する場合、コードは次のようにネストされます~ATH(x){~ATH(y){EXECUTE(<code>)}}。のすべてのコマンド<code>両方で実行されますxとy。 それではコマンドに移りましょう。 +関連する変数を1つ-増やし、1つ減らします。そして...それだけです。 の最後の機能~ATHは、動作するものは何でも殺すことです。変数は<name>=<value>、コマンドで(改行が後に続く)形式で出力されます[<name>].DIE();。その後、プログラムDIE <name>は、変数の値の絶対値に等しい回数だけ単語と改行を出力します。同時に変数が削除されると[<name1>,<name2>].DIE();(存在する限り、必要な数の変数を削除できます)、DIE()コマンドは変数に対して順次実行されます。 サンプルプログラム プログラム1: import sollux; //calls variable "sollux" import eridan; //calls variable "eridan" ~ATH(sollux){EXECUTE(--)} //sets the value of "sollux" to -2 ~ATH(eridan){EXECUTE(+++++)} //sets the value of "eridan" to 5 [sollux].DIE(); //kills "sollux", prints "DIE …

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