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

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

1
トニー・スタークがアイアンマンになるのを手伝ってくれる?
トニー・スタークは、私たちが知っているように、アイアンマン(メタルスーツとたくさんの武器を身に着けたその超素晴らしい男)です。ただし、メタルスーツがなければ、彼はその称号を主張できません。偉大なエゴを持っているトニースタークは、世界で最も難しいトライアスロン(アイアンマンレースと同等の距離)と見なされているノースマンをフィニッシュして、アイアンを離れても平均的なマシンであることを証明したいと考えています。家に。 Tonyには、コンテストの各部分に事前定義されたスケジュール/タイムプランがあります。 つまり、レースのすべての場所(つまり、開始からの距離)には、スケジュールに基づいて彼がそこに到着する予定時刻があります。 彼はまた、過ごした時間とカバーされた総距離を知らせる時計を持っています。 あなたの仕事は次のとおりです。これらの2つの値を入力として、スケジュールよりどれだけ進んでいるか、または遅れているかをトニーに伝えます。入力は、フォーマットの時間hh:mm:ss(または(オプション)h:mm:ssが10時間未満の場合)、彼が到達した距離(km)を示す10進数です。 3つの分野のそれぞれの距離は次のとおりです。 Swim: 3.8 km Bike: 180 km Run: 42 km Total distance: 225.8 km // Input will never exceed 225.8 各パーツの推定時間(つまり、スケジュール): Swim: 1:20:00 Transition 1: 0:12:00 Bike: 7:10:00 Transition 2: 0:05:00 Run: 4:50:00 Total: 13:37:00 距離と推定時間の両方がレース前に与えられるため、ハードコードすることができます。トランジションゾーンは、彼が服や設備を変更する場所にすぎないため、トランジション中は移動しません。 入力は、カンマ区切り、文字列、2つの個別の引数、または言語で最も便利なものにすることができます。彼+/-mm:ssは時間ではなく形式での出力を望んでいます(彼が1時間を超えるのが遅すぎたり速すぎたりしないと想定してください。移行中の場合は、彼がそこにたどり着いたと想定できます。 例と説明(長さについての謝罪): Input: 04:32:20 93.8 Output: +34:40 / 34:40 …

2
Javaの最も短い無限ループ文は何ですか?
私はJavaのゴルフに取り組んでおり、無限ループが必要です。明らかに、特にそのような表現力豊かな言語では、必要以上のバイトを使いたくないのです。 実行したいコードがあるとすると、ベースラインは明らかwhile(1>0)/*stmt*/に、1行に10文字while(1>0){/*stmt1*//*stmt2*/}以上、または複数行に12文字追加されています。私は永遠にループしたいコード(まあ、永遠のようです...ループから抜けたりループから戻ったりしたくないかもしれない)が特定の長さを持つため、追加の文字を追加する必要があります。実際にループさせるため。 最初はこれが最高だと思っていましたが、専門家にそれを捨ててもっと良いものを見つけられるかどうか確かめるつもりでした。
8 code-golf  tips  java 

3
均等にシャッフル
いくつかのトレーディングカードは実際の価値があり、お金で売ることができます。カードを曲げると、価値がなくなり、見た目が新しくなります。トレーディングカード(ポケモン、マジックなど)のデッキがあり、それらをシャッフルしたいとします。すべてのカードを曲げるブリッジを行う代わりに、カードをシャッフルする別の簡単な方法は、カードを山に置くことです。これが私の意味です。 バックグラウンド 60枚のカードデッキをシャッフルする必要がある場合、60枚のカードを20枚のカードの3つの山に分けることができます。これには複数の方法があります。最も明白なのは、カードをパイルAに入れ、次に1つをパイルBに入れ、次に1つをパイルCに入れることです。別の方法は、カードをパイルC、次にB、次にAに入れることです。カードを山に均等に広げる方法でもあります。これは1つです。カードを山Aに置き、別のカードをAに置き、次にカードを山Bに置き、次にカードを山Cに置きます。 チャレンジ evenパイルにシャッフルする特定の方法がカードを山に均等に広げた場合に出力unevenし、そうでない場合は各山のカードの数と出力する完全なプログラムを作成します。 入力 入力は、STDINまたは最も近い代替(関数なし)から取得されます。 [sequence] [deck size] sequence文字列です。カードが山に置かれているパターンを示します。それぞれの異なるキャラクターは1つのパイルに対応します。この文字列は常にデッキサイズの下にあり、大文字のAZのみが含まれます。 deck sizeデッキにあるカードの数を指定する整数です。デッキのサイズが60の場合、デッキ内のカードの数は60です。 出力 even シャッフル終了時の各山のカードの数が同じである場合、プログラムはこれを出力する必要があります。 uneven [pile1] [pile2] [...] シャッフルの終わりにある各山のカードの数が同じでない場合、プログラムは次のように出力unevenし、各山のカードの数を出力する必要uneven 20 30があります。パイル数は関係ありません。 その他の情報 これはコードゴルフの課題なので、9月25日にバイト単位で最短のコードが勝ちます。バイト数が同数の場合、最初に送信されたコードが優先されます。 プログラムは関数ではなくプログラムでなければなりません。 可能であれば、オンラインインタープリターへのリンクまたはあなたの言語のインタープリターをダウンロードできる場所へのリンクを回答に含めてください。 このチャレンジ内で私が指定しないものは公平なゲームです。つまり、私がそれを言わなくても、それはあなた次第です。何か曖昧なことがあれば、教えてください。それに応じて回答を編集します。(うまくいけば、これは私の最後の挑戦よりスムーズに行きます。) 例 Input | Output | Alternate outputs (if uneven) | ABC 30 | even ABC 31 | uneven 11 10 10 | …

3
ジグザグストリング
ジグザグストリング 文字列と正の整数を指定して、ピーク振幅と文字間隔が整数に等しいジグザグ波パターンで文字列を出力します。 これはこの質問に似ていますが、文字間隔も含まれます。 入力 入力はSTDINから読み取るか、関数の引数として使用できます。入力は、改行と正の整数を含まない文字列です。 出力 期待される出力は、ベースラインの最初の文字で、ジグザグの波パターンに変換された文字列です。波のパターンには、整数と等しい振幅と文字間隔が必要です。 例 入力 Programming Puzzles & Code Golf 2 出力 o g s r g n e e G P r i P l & d o a m u z o l m z C f 入力 Programming Puzzles & Code Golf 1 …

1
ユーザーエージェントによるゴルフ
通常、インターネットチャレンジを実行する場合、ユーザーエージェントを指定する必要はありませんが、Googleを処理する場合は変更されます。 Googleはおそらくスパムボットを阻止するためにUrllibユーザーエージェントをブラックリストに登録しているため、ユーザーエージェントを指定する必要があります。これは多くのバイトを消費し、率直に言ってかなり面倒です。 例1. 例2. 例3。 注:以下のヒントを使用するようにPythonの回答を更新しました では、最短のバイト数を使用してこの問題をどのように回避しますか?

10
CoffeeScriptでのゴルフのヒント
CoffeeScriptコードを短くするために知っているトリックは何ですか。 CoffeeScriptは、JavaScriptにコンパイルする言語です(正確には、ES3に「トランスパイル」します)。黄金律は「それは単なるJavaScriptです」であり、実行時のオーバーヘッドはありません。ほとんどのJavaScriptのヒントとテクニックも適用されます。 副次的効果としては、次のことも意味します。JavaScriptを使用している開発者(自分自身を含む)は、より短いCoffeeScriptの代わりにJavaScript構成を使用する傾向があります。 このスレッドは、CoffeeScriptに固有のヒントに焦点を当てています。 関連トピックへのリンク: JavaScriptでのゴルフのヒント ECMAScript 6以降でのゴルフのヒント
8 code-golf  tips 

3
C#で数値の文字列表現をint []に変換する
数値の文字列表現をint[]各桁を含むに変換する最も短いC#ステートメントは何ですか? string number = "1234"; number.Array.ConvertAll(line.ToCharArray(), c => Int32.Parse(c.ToString())); number.ToCharArray().Select(i => Convert.ToInt32(i.ToString())).ToArray(); number.Select(i => Int32.Parse(i.ToString())).ToArray(); number.Select(i => i - '0').ToArray(); 誰かが私の最後のアプローチを倒すことができますか?
8 code-golf  tips  c# 

5
ハングマンで遊ぼう!
このページによると、英語の絞首刑執行人の単語を推測する最良の戦略は、条件を満たす単語リストの各文字のオッズを計算することです。しかし、私は本当に怠惰なので、自分で辞書のすべての単語を計算したくありません。しかし、私はあなたがいつも私を助けるためにここにいることを知っているので、あなたは私のためにそれを行うコードの王を私にすることができると確信しています。また、ハードディスクがほぼいっぱいになっているので、可能な限り最小のコードを使用します。これは、ことを意味し、これはコード・ゴルフ、そして勝つバイトの最低量で提出するだけでなく、最も正確なものです!。 入出力 この単語リストからランダムな単語が取得されます。 プログラムは、引数で、またはユーザー入力(ポップアップ、標準入力、その他)を受け入れる必要があります。 単語の長さ 間違った文字は既に見つかりました。ゲームを開始したばかりで、間違った文字を提供していない場合は0 すでに見つかった文字と単語内での位置 例:./hangsolver 6 XBZ 1P 4P 2E 6Eここでは、「人」という言葉を選びました。明確にするために:PE _ P _ E(間違った文字はXBとZです) つまり、1つのゲームで、スクリプトを何度も起動する必要があります。 出力は1文字です。次の試行です。 ルール 他よりも少ない試行で10単語を推測する方が勝ちます。 引き分けの場合、バイト単位の最短コードが優先されます。 それでも同点の場合は、最速のプログラムが勝ちます。 あなたは英語でこれらの単語だけがあると思うかもしれません 単語リストから有効な単語のみを試します。 私は良いコンピュータを持っています、CPUパワーは問題になりません(しかし、できるだけ早く答えるようにしてください!) オンラインソルバーでは解決できませんが、ワードリストをダウンロードするか、引数として渡すことができます。「wordlist.txt」という名前で、スクリプトと同じディレクトリにあると想定できます。 コードは一般的なOSで実行できる必要があります。それは、windows、mac、ubuntu / debian / CentOS、Redhatのいずれかです。 外部ソルバーは使用できません。 ただし、URLをワードリストに短縮できます。 このコードゴルフは9月1日に終了します。 上記の方法を使用する必要があります。 幸運を ! SEでここに単語リストが見つかりました。

1
新しい難解な言語PointerLangのインタープリターを作成する
私は、ポインター演算がプログラミングの主要ツールである言語を設計しました。 下記は用例です。 (print 0 to 8) =9[>1=9-*-1.>-1-1] (print 1 to 10 with spaces in between, character literal extension used) =1[.>1=10-*-1[>1=' '!>-2+1;-2];1]='\n'! (compute the factorial of 10) =10>1=*-1-1[>-1**1>1-1]>-1. (print "hi") =104!=105! (print "hi" with extension for arrays) ={104,105,0}[!>1] (print "Hello, world!" with extension for C-style string literals) ="Hello, world!"[!>1] 言語仕様 言語の定義は非常に簡単です。Cの経験があれば簡単に理解できますが、私はそうは思いません。 …

12
数字の空欄を埋める
次の形式の、正の整数の2タプルのリストが表示されます。 a1 b1, a2 b2, ..., an bn つまり、2つのタプルはカンマで区切られ、各タプル内の整数はスペースで区切られます。すべてのa数値は、bs と同様に、厳密に昇順です。あなたの目標は「ギャップを埋める」ことです。これは、次のことを意味しています。 a i +1 == a i + 1の場合、何もしません。 そうでない場合、a i +1 <a i + 1の場合、次のようにタプルをシーケンスに挿入します:a i b i、a i +1 b i + 1、a i +2 b i + 1、...、a i + 1 -1 b i + 1、a i + …

2
Pythonでの一般化整数キャスト
バックグラウンド Pythonに整数に変換したい文字列があります。通常、私は単に使用しますint: >>> int("123") 123 残念ながら、このメソッドは-?[0-9]+(先頭または末尾の空白を削除した後)一致する文字列のみを受け入れるため、あまり堅牢ではありません。たとえば、小数点付きの入力は処理できません。 >>> int("123.45") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '123.45' そしてそれは確かにこれを処理することができません: >>> int("123abc?!") 一方、この動作は、Perl、PHP、そして謙虚なQBasicでさえ大騒ぎすることなく実現できます。 INT(VAL("123abc")) ' 123 質問 これがint、Python でのこの「一般化された」作業における私の最短の取り組みです。元の文字列が含まれs、結果が次のようになると想定すると、50バイトになりますi。 n="";i=0 for c in s: n+=c try:i=int(n) except:0 かなり単純ですが、try/ exceptビットは醜くて長いです。それを短くする方法はありますか? 細部 回答は次のすべてを行う必要があります。 …

4
最小文字列セグメントサイズを計算する
バイナリのスペースを節約するための一般的な最適化は、1つのリテラルが別のリテラルである文字列リテラルをマージすることです。たとえば、文字列リテラルを含むバイナリ a: foobar b: bar c: barbaz d: foobarbaz e: baz 次の文字列リテラルプール(-terminatorを#表す\0)が含まれる場合があります。 foobar#foobarbaz# 記号でa、b、c、およびd文字列プールの先頭からの相対次の値を持ちます: a: 0 b: 3 c: 10 d: 7 e: 13 このタスクでは、特定の入力文字列セットの文字列プールの最小サイズを計算する必要があります。 入力 入力は、それぞれが32〜127の範囲の最大80のASCII文字(改行を含まない)と、その後に単一の改行文字で構成される、最大999の一連の文字列です。 出力 各入力文字列(終端の改行を含む)がその文字列の部分文字列になるような最短の文字列を見つけます。出力は、その最も短い文字列の長さになります。文字列は出力せず、長さのみを出力します。 得点 この課題はコードゴルフであり、標準の抜け穴が適用されます。オクテットで最小長のソリューションが優先されます。 例 入力: foobar bar barbaz foobarbaz baz #改行を表す最短の文字列: foobar#foobarbaz# 長さ:17 入力: foobar foobaz foobarbaz barbaz #改行を表す最短の文字列: foobar#foobaz#foobarbaz# 長さ:24

2
Bozosの並べ替え
前書き この課題は、3つの(悪い)ソートアルゴリズムについてです:Bogosort、および私が思いついた2つの他のバリアント(ただし、ある時点で他の人によって考えられていた):(BogoswapAKA Bozosort)およびBogosmart。 Bogosort完全にランダムに配列をシャッフルし、それがソートされた(昇順)になったかどうかをチェックすることで機能します。そうでない場合は、繰り返します。 Bogoswap2つの要素をランダムに選択し、それらを交換することで機能します。ソートされるまで(昇順で)繰り返します。 Bogosmart2つの要素をランダムに選択し、配列をソート(昇順)に近づける場合にのみそれらを交換することで機能します。インデックスが低い要素がもともと高い要素よりも大きい場合。ソートされるまで繰り返します。 チャレンジ この課題では、これら3つのソートアルゴリズムのそれぞれの効率(または欠如)を探ります。ゴルフされたコードは 1から8までの整数の8要素配列のシャッフルを生成します(これをどのように行うかを確認するために読み続けてください)。 この配列に各アルゴリズムを適用します。そして 元の配列を表示し、その後に、各アルゴリズムに必要な計算数を1つのスペース(末尾スペースok)で区切って、の形式で表示します<ARRAY> <BOGOSORT> <BOGOSWAP> <BOGOSMART>。 プログラムは10個のテストケースを生成します。最初に10個すべてを生成することも、一度に1個ずつ生成することもできます。以下の出力例。 詳細: の場合Bogosort、配列がシャッフルされた回数を記録する必要があります。 についてはBogoswap、行われたスワップの数を記録する必要があります。 についてはBogosmart、行われたスワップの数を記録する必要があります。 出力例: 87654321 1000000 100 1 37485612 9050000 9000 10 12345678 0 0 0 28746351 4344 5009 5 18437256 10000 523 25 15438762 10000 223 34 18763524 58924 23524 5 34652817 9283 …

6
最適なニムの動きを見つける
ゲーム Nimは数学的な戦略ゲームで、2人のプレイヤーが順番に、異なるヒープからアイテムを取ります。自分のターンでは、少なくとも1つのアイテムを取る必要があり、1つのヒープからのみ取得するという条件で、必要な数だけアイテムを取得できます。最後のアイテムを取るプレイヤーが勝ちます!これは解決済みのゲームです。戦略に入る前に、こちらでオンラインでプレイしてみてください。 戦略 勝利の戦略は、このリンクで非常に明確かつ簡単に説明されています。もう少し専門的な用語を使って説明します。このゲームに勝つには、binary-digital-sumが常に0になるように、常にできるだけ多くのアイテムを取ることです。次のボードについて考えてみます。 * * * * * * * * * * * * * * * 1 2 3 4 5 このボードのbinary-digital-sumを見つけるには、次のことを行う必要があります。 各行の数値をバイナリに変換します。したがって、001、010、011、100、101があります。 すべての数字を一緒に追加し、キャリーは無視します。 001 010 011 100 +101 ---- 001 各数値をビット単位でxorすることもでき、これにより同じ結果が得られます。 現在、この現在の構成の合計が001の場合、これは(まだ)勝利ボードではありません。しかし、あなたはそれを勝利ボードにすることができます!1列目、3列目、または5列目から1つのアイテムを取り出すと、合計は0になります。これは勝利ボードです。つまり、ミスをしなければ、次に移動するプレーヤーが負けます。したがって、常に勝利ボードでターンを終了する必要があります。列5から1つの項目を削除するとします。ボードは次のようになります。 * * * * * * * * * * * * * * …
8 code-golf  game 

16
文字の繰り返しが最も多い単語
最近、スタックオーバーフローに関する質問がありました。OPは、文字の繰り返しが最も多い文字列内の単語を検索する関数を作成しようとしました。もちろん、数秒で1つ書くのは難しくありません。私は楽しみのために、できるだけ短い時間でJavascriptで1つ作成しました。しかし、私はコードゴルフの専門家ではないので、この単純なプログラムはどれだけ短くできるのでしょうか。 チャレンジ 一連の単語を取り込んで、最も多く繰り返される1文字の単語を返すか印刷するプログラムまたは関数を記述します。 ルール: 繰り返し1文字が最も多い単語を選択します(下の例を参照) 単語に繰り返し文字がない場合は、-1を返します。 2つの単語の繰り返し文字の最大数が同じである場合は、文字列の先頭に近い方の単語を選択します。 バイトでの最短の提出が優先されます。 入力 スペースで区切られた1つ以上の単語で構成される文字列を入力として受け取ります。入力は、STDIN(または最も近い代替手段)、コマンドラインパラメーター、または関数の引数から取得できます。 出力 出力をSTDOUTに出力して返します。 例 文字列を考えますaaabbb cccc。これには2つの単語が含まれています:aaabbbとcccc。ワードはaaabbb3持ちa'sおよび3 b' Sを、そしてcccc4有しcさん。したがって、で繰り返される文字の最大数aaabbbは3で、最大ccccは4です。単一の文字が繰り返される最大数の単語を選択するので、の出力はにaaabbb ccccなりますcccc。 その他のテストケース: Today, is the greatest day ever! --> greatest This is a great day --> -1 aaabbb cccc --> cccc
8 code-golf  word 

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