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

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

1
機能している最低限のIRCdを記述する
少し変わったものですが、ねえ、なぜですか?:) 目的:最小限の文字で最小限の機能を提供する、選択した言語で機能するIRCデーモンを記述します。以下の基準を満たしている限り、IRC RFCに完全に準拠する必要はありません(これにより、課題の面白さが大幅に減少します)。 要件: クライアントは、ポート6667に接続して使用できる必要があります。少なくともirssiとXChatは、デフォルトの構成で正常に接続できる必要があります。 ユーザーは、自分のニックネームを指定し、すでに接続しているときにそれを変更し、チャンネルに参加し、チャンネルを離れ、正常に終了できる必要があります(つまりQUIT)。 チャネルは通常のように作成する必要があります-ユーザーがいないチャネルに参加すると、「作成」されます。彼らは永続的である必要はありません。 ユーザーは、チャネルメッセージとプライベートメッセージの両方を(つまり、他のユーザーに)送信できる必要があります。 WHOISこのコマンドは、実装されなければならないだけでなく、PING/ PONG、LIST、およびNAMES(ほとんどが幸せな顧客を維持するために)。 制限: サードパーティのライブラリ(非コアイベントI / Oライブラリを含む)を使用することはできません。使用するプラットフォームに付属する標準ライブラリのみが許可されています。 実装に標準ライブラリのIRCの明示的なサポートが含まれている場合、それも使用できません。もちろん、標準ライブラリのネットワーク機能は問題ありません。 提出物は独立して実行できる必要があります。mIRCスクリプティングでは賢くありません:) モード、キックなどを実装する必要はありません(上記のクライアントで動作させるために必要でない限り)。SSLも必要ありません。上記の最小限の機能で、チャレンジを短く楽しいものにしてください。 IRCが何であるかの詳細についてここでは、RFCは1459年と2812年(私が原因評判の私の不足のためにそれらに直接リンクすることはできません)です。機能的で要件に準拠した最短の提出が優先されます!
8 code-golf 

2
リストを整理する
以下の図のようなウィンドウで、アルファベット順に並べたい文字列のリストが表示されます。 示されているように、5つの操作があります。 上に移動[U]-選択した文字列を1つ上に移動します 下に移動[D]-選択した文字列を1つ下に移動します 最初に移動[F]-選択した文字列をリストの一番上に移動します 最後に移動[L]-選択した文字列をリストの一番下に移動します 逆[R]-リストの順序を逆にします STDINを使用して、数値(文字列の数)を受け入れ、その後に文字列の順序付けられていないリストを続けます。各文字列は、2〜99の小文字の英字で構成されます。(上記の例は有効な入力ではありません。) STDOUTを使用して、リストを整理する方法を印刷します。最初に、選択する項目に言及し、次にリストをアルファベット順に並べるためにその項目に対して実行する操作に言及します。 例えば: February U December F May D D June D R D... 説明:2月をクリックして上に移動1. 12月を選択して、上に移動します。5月、2回下に移動します。6月、一度下に移動し、リストを逆にして、もう一度下に移動... 有効なソリューションは明らかにたくさんあるので、できるだけ短いものを選択する必要があります。つまり、操作の数が最も少ないメソッドを選択します(上記の例では7)。 正しい出力と入力のつながりがある場合は、次の順序で解決してください。 文字列の選択が最も少ないものを選択します(上記の例では4)。 操作が最も少ないものを選択し、連続する同一の操作(1つの文字列に対して)を1つとしてカウントします(上の例では6)。 出力が最も短いものを選択します(合計文字数が最も少なく、スペースを数えます)。 アルファベット順で最初に出力されるものを選択します。 これはコードゴルフです。常に正しい出力を生成する最短の送信が優先されます。 例 に 2 zz abc アウト zz D に 3 cc bb aa アウト aa R に 4 abc def …

11
熱くなったり冷たくなったり:宝物を見つける
「ハックルバックルビーンズトーク」と呼ばれることもある特定の子供向けゲームは、2人のプレーヤーでプレイされます。ここでは、ゲームのプレイ方法について簡単に説明します。 一方のプレイヤーは「ハイダー」に指定され、もう一方のプレイヤーは「シーカー」に指定されます。 シーカーは部屋の外に出ますが、ハイダーはあらかじめ選択された小さなオブジェクト「宝物」を隠します。 次に、探索者が役立つヒントを提供している間、ハイダーはオブジェクトを探します。 シーカーが宝物に近づいている場合、ハイダーは「暖かい!」と呼びます。 シーカーが宝物から離れている場合、ハイダーは「クーラー!」と呼びます。 探求者が宝物を見つけたら、彼らはそれを見つけたと発表します。 あなたの子供はあなたと一緒にこのゲームをプレイしてほしいと思っていますが、代わりにcodegolf.SEの質問に答えるのに忙しいです。それで、あなたは彼らとゲームをするプログラムを書くことにしました。ただし、入力する時間をできるだけ短くしたいので、プログラムの文字数をできるだけ少なくするようにしてください。 ゲームがプレイされる部屋を2次元トロイダル正方形フィールドとして定義できます。座標0,0は左下隅、座標99,99は右上隅です。宝物は、いくつかの位置に配置されているn,m場合nとm0から99までの間の両方の正の整数です。 あなたのプログラムは、その作り付けのユーザ入力機能を使用してプレイヤー(例えばからの入力を取得するprompt()、raw_input()あなたの選択した言語がいる場合など)はありません、ユーザーの入力機能を持っている代わりに、STDINからの入力を取ります。ゲームは次のように機能します。 プログラムは、ある位置に宝を「隠し」n,mます。 プログラムは、探索者に初期探索位置を入力するように促します。入力はx ywhere xおよびwhere の形式でy正の整数になります。 最初の検索位置x,yが宝物の位置n,mと等しい場合、プログラムは「正しい」を出力して終了します。さもないと: プログラムはシーカーに移動を促します。入力フォームで来るとされている整数負でもよいです。これは、シーカーが移動する方向ベクトルを表します(x方向とy方向です)。 a babab 結果のシーカーの位置が宝物である場合、プログラムは「正しい」を出力して終了します。さもないと: 探求者が宝物から離れている場合、プログラムは「クーラー」を出力し、宝物に向かって移動している場合、「ホッター」を出力します。 手順4に進みます。 「遠ざかる」と「近づく」という言葉があいまいかもしれません。この課題では、移動後のシーカーの位置が、移動する前の位置よりも宝物に近い場合、宝物に向かって移動しています。そうでなければ、彼らは離れて移動しています。(はい、これは、結果の位置と前の位置が同じ距離にある場合、プログラムは「クーラー」を出力する必要があることを意味します)。 これはコードゴルフなので、最短のコードが勝ちます。仕様が明確でない場合は質問してください。
8 code-golf  game 

2
マウスを捕まえろ!
可能な限り短いプログラムを作成し、一辺の長さが274ピクセルで画面の真ん中に重心がある上向きの正三角形の中にマウスカーソルを閉じ込めます。 (チーズウェッジのために三角形。) プログラムの実行中は、カーソルの先端がこの三角形の外に移動することはできず、内部で正常に移動して機能するはずです。ときにEscキーがヒットしたプログラムは、マウスを解放し、終了する必要があります。 得点 これはcode-golfで、バイト単位の最短コードが優先されます。標準のASCIIのみを使用できます。 細部 コンピュータの電源を切る、プロセスを強制終了する、またはを押すAlt-F4などのCtrl-Alt-Deleteほかに、カーソルを解放する唯一の方法はEscキーでなければなりません。 プログラムの開始時にカーソルが三角形の外側にある場合は、カーソルをどこかに配置する必要があります。 カーソルは、三角形の斜めの2辺をスムーズに上下に移動できる必要があります。 ディスプレイが複数のモニターにまたがっている場合、三角形はいずれか1つのモニターの中央またはすべてのモニターの組み合わせの中央に表示されます。(モニターが1つしかない場合は、これをテストする必要はありません。) タッチスクリーンユーザーが三角形の外側をクリックしても問題ない。 小さなボーナス質問: 274はどこで手に入りましたか?
8 code-golf 

3
基本的な代数展開
問題 私は、計算における数学についての考え方を変え、代数関数の文字列を取り入れ、それらを使って驚くべきことをする素晴らしい新しいプログラムを手に入れました!唯一の問題は、特定の代数しか解析できないことです。それ以外の場合、宇宙はそれ自体に折りたたまれます。これは悪いことです。幸い、この驚くべき新しいプログラムの入力では、いくつかの基本的な操作だけが必要ですが、それでも拡張する必要があります。 ルール 答えは次の表現を単純化できなければならない 2+2 に減らす必要があります 4 (5+x)+6 に減らす必要があります x+11 (x+2)^2 に減らす必要があります x^2+4*x+4 (x-5)*(3+7*x) に減らす必要があります 7*x^2-32*x-15 5*x+9*x に減らす必要があります 14*x (2*x^2)*x^3 に減らす必要があります 2*x^5 回答は、括弧を完全に削除できる必要があります。これは、すべての配布が行われる必要があることを意味します。 Answersは、次のすべての演算子と標準トークンを処理できる必要があります。 + (加算機能) - (減算機能) * (乗算機能) ( (グループを示すために使用される左括弧) ) (最後に開始されたグループの終わりを示すために使用される右括弧) x (標準変数) [0-9]+ (リテラル非負数) (expr)自体が式であるため、(expr)^ 2を再帰的に含む表記expr ^ 2を使用して、回答は少なくとも2乗できる必要があります。 解決策は標準的な中置記法でなければならず、RPNはナンセンスではありません! Mathematicaのようなライブラリ関数Simplifyはあなたのためにこれを行いません。 ソリューションは、単一の引数を取り、展開されたバージョンを返す関数である必要があります これはコードゴルフなので、OPから1週間で(キー)ストロークが最も少ない回答が勝利します。 ノート もちろん、この数学の世界にはスペースはありません!括弧のみ。 因数分解から節約するために除算は必要ありません 操作の標準的な順序が適用されます。 …
8 code-golf 

16
「スキップ」でスコアのリストをランク付けする
最大から最小に事前に並べ替えられたスコア(非負の整数)のリストがある場合: [ 10, 10, 6, 6, 4, 0] 各スコアに1から昇順の整数ランクを割り当てます。これにより、等しいスコアが同じランクになります(つまり、同順位になります)。 [ 1, 1, 3, 3, 5, 6 ] 同順位の場合、ランクは「スキップ」されます。たとえば、1番目と2番目に大きいスコア(10と10)は同数であるため、どちらもランク1であり、ランク2は「スキップ」されているため、3番目に大きいスコア( 6)はランク3です。 入力スコアに対応する降順でないランクのリストを出力します。 例 In: 10 10 6 6 4 0 Out: 1 1 3 3 5 6 In: 10 9 8 Out: 1 2 3 In: 0 0 0 Out: 1 1 …

1
回文の素数
私はタスクを解決しています、ここで: 入力: 整数としての数値。 出力: 整数として最も近い大きい回文素数。 私は感謝のヒントを私の解決策を短くする方法。または、アプローチの変更が有益であるかどうかの指示。 golf=lambda l,r=range:next(x for x in r(10**6)if(x==int(`x`[::-1]))&all(x%d for d in r(2,x))and x>l) 回文: x==int(`x`[::-1]) プライム: all(x%d for d in r(2,x))

3
整数からビット文字列へのコンパクトなコーディング
それぞれのx最大値mがわかっているステートレスデコーダーを元の整数にデコードできるように、正の整数をビットにコンパクトにコード化したいx。ハフマン符号化の場合のように、符号化の連結を一意に復号化することが可能でなければならない。 [上記の紹介は残りの動機付けとなりますが、正式な定義の一部ではありません] 表記:負でない整数の場合i、バイナリでn(i)表すのiに必要なビット数とします。それは次のkような負でない最小の整数ですi>>k == 0 i : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 .. n(i): 0 1 2 2 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 .. およびに対してF(x,m)定義された関数が必要です。出力には ' …
8 code-golf 

18
分数を単純化する
勝者:イアンD.スコットの回答、1バイト(48バイト)ずつ!見事! プログラムは、簡略化できる部分からの入力を受け入れ、それを単純化する必要があります。 ルール: 分数が既に最も単純な形式である場合は、ユーザーに通知する必要があります これを行う組み込み関数はありません ユーザーはある時点で数値を入力する必要がありますが、プログラムがそれを読み取る方法は重要ではありません。stdin、console.readlineなどを使用できます。ある時点で9/18(たとえば)ユーザーが入力する限り、有効です。 出力はstdout、console.writelineなどで行う必要があります。 分数はとしてx/y入力され、次のように出力する必要がありますa/b 分数は最も単純な形式を出力する必要があります。たとえば、8/12-> 6/9は無効であり、有効なソリューションは2/3のみです。 このコンテストは2014年8月9日に終了します(投稿から7日間) これはコードゴルフの質問なので、最短のコードが勝ちます

30
数値を入力して曜日を返す
1つのプログラミング言語に限定されません。 私が言っているのは、1を渡すと月曜日が返され、7は日曜日に対応するということです。 同じことを行うために、Javaで146バイトのステートメントを管理しました。 return (n<1?"invalid":(n<2?"monday":(n<3?"tuesday":(n<4?"wednesday":(n<5?"thursday":(n<6?"friday":(n<7?"saturday":(n<8?"sunday":"invalid")))))))); あなたのプログラムは: フルワードを出力(STDOUT) 入力が1未満または7より大きい場合にクラッシュしない

10
IBANバリデーターを作成する
英数字の文字列を受け入れ、ISO 13616:2007に従って検証するプログラムを記述します(関数の本体で十分です)。検証のアルゴリズムは(出典:IBANに関するWikipediaの記事http://en.wikipedia.org/wiki/International_Bank_Account_Number): IBANの検証IBANは、それを整数に変換し、基本的なmod-97操作(ISO 7064で説明)を実行して検証されます。IBANが有効な場合、残りは1になります。IBAN検証のアルゴリズムは次のとおりです。 国ごとにIBANの長さの合計が正しいことを確認してください。そうでない場合、IBANは無効です。正しいIBANの長さは次の場所にあります:http : //pastebin.com/kp4eECVk(以下にもあります)。IBAN番号の長さ順になっています。各番号の最初の2文字は国コードです。最初の2文字の後ろにある他のすべての文字(ペーストビンでは小文字ですが、実際のIBANでは大文字でもかまいません)には、任意の英数字を使用できます。 最初の4文字を文字列の末尾に移動します。 文字列の各文字を2桁に置き換えると、文字列が拡張され、A = 10、B = 11、...、Z = 35になります。 文字列を10進整数として解釈し、その数値の剰余を97で除算して計算します 残りが1の場合、チェックディジットテストに合格し、IBANが有効である可能性があります。 例(架空の英国の銀行、ソートコード12-34-56、口座番号98765432): - IBAN: GB82 WEST 1234 5698 7654 32 - Rearrange: W E S T12345698765432 G B82 - Convert to integer: 3214282912345698765432161182 - Compute remainder: 3214282912345698765432161182 mod 97 = 1 アルゴリズムに従って、アルゴリズムは、数値が有効な場合はtrue(または真の値)を返し、無効な場合はfalse(または偽の値)を返します。番号が実際に存在するかどうかを確認する必要はありません。有効である場合のみです。アルゴリズムは、上記のウィキペディアの記事で言及されている、承認されたさまざまなIBAN番号のそれぞれに対して機能する必要があります。このアルゴリズムは、2つの英数字の間に区切り文字がある場合とない場合の両方の数値と互換性がある必要があります。区切り文字は、ピリオド、スペース、またはダッシュのいずれかで、1つの数字にさまざまなタイプの区切り文字を含めることができます。 通常の抜け穴が適用されます。外部リソース、組み込み関数、メソッドはありません。 パズルタイプはコードゴルフです。バイトカウントで最短のコードが優先されます。プログラムの実行に必要な標準のボイラープレート(名前空間、クラス、OOPでの関数宣言など)は、バイトカウントに含まれていません。 …

1
平方カウントプログラムを書く
よく知られているパズルでは、3x3グリッド上のポイントを使用して作成できる正方形の数を数えます。 . . . . . . . . . 答えは6です。4つの小さな正方形、1つの大きな正方形、上、左、下、右のペグから形成され、正方形の対角線に沿ってエッジを持つ1つの正方形です。 あなたの仕事は、一連の点から形成できる正方形の総数を数えるプログラムを構築することです。 プログラムは、(選択した)2つの形式のいずれかで入力を受け取ります。 いずれかからなるグリッド又は。正方形がコーナーになることができるグリッド上のポイントを表し、グリッド上のすべてのスペースは、水平または垂直にちょうど1単位離れています。MN.. 正方形を配置できるポイントを表す座標ペアのリスト。 提供されたポイントを使用して形成できる個別の正方形の数を返します。プログラムは、可能なすべての入力に対して正しい解を返す必要があります。 たとえば、上の入力を使用しますが、中央の四角が欠落しています。 ... . . ... ここでは2つの正方形(大きな正方形と斜めの正方形)しかないため、プログラムはを返し2ます。 これをあらゆる言語で行うための最短のコードが優先されます。
8 code-golf 

9
洗練された構文チェッカーを作成する
同じ言語のプログラムの構文をチェックできるプログラムを作成します。たとえば、Pythonで実行すると、Python構文がチェックされます。プログラムは標準入力でプログラムを受け取り、その構文が正しいかどうかを確認します。正しければ、標準出力に「true」だけを出力します。そうでない場合は、標準出力に「false」のみを出力します。 ただし、プログラムは1つのインスタンスで正しくない必要があります。独自のソースコードを入力した場合、標準出力に「false」が出力されます。これはコードゴルフなので、最短のプログラムが勝ちます! 注:これは厳密にはクインではありませんが、クインのルールに従う必要があります。つまり、ファイルシステムなどからソースコードにアクセスすることはできません。 注:構文エラーのために実行できなかったプログラムは、実行可能である必要があるため、この課題を解決することはできません。

20
9桁の問題
見つけるためのプログラム書く1から9までの数字のそれぞれが一度だけ表示される9桁からなる番号を。この数は、これらの分割可能要件も満たしている必要があります。 数は9で割り切れる必要があります。 右端の数字を削除すると、残りの数字は8で割り切れます。 新しい番号の右端の桁を削除すると、残りの番号は7で割り切れるはずです。 以下同様に、1桁になるまで(これは必ず1で割り切れます)。 クレジットDávidNémeth
8 code-golf 

12
可能なすべての整数を生成する
入力:あなたは2つの整数を与えている、nとk。nは正(> = 1)の整数、およびk整数は、使用を許可されている回数ですn。 出力:すべてのほとんどで使用して形成することができる非負整数の出力k n:さんは、これらの数学的演算を使用して+、-、*、/、および括弧。 編集:言語が配列/セットなどからの要素の削除をサポートしている場合、負でない整数の要件が必要です。そうでない場合は、必要ありません。 式に存在できる唯一の数値はnです(ただし何度でも)。式の値がデータストレージの最大値(intまたはlongなど)の最大値を超える場合は、それを補正する必要があります(に指定できる最大値はありませんn)。 速度は重要ではありませんが、最短のコードが優先されます! ボーナス: -50:数学演算のリストに指数を含めます。べき乗は、底がe = 2.71828ではなく、nのある式であると定義されています... -50:指定された可能な操作が整数でない場合は、床(または天井)関数を含めます。 例 > 2 2 0 1 4 > 4 3 3 4 5 12 20 64 ... (サンプル入出力には、必ずしもボーナスが含まれていません)

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