タグ付けされた質問 「string」

文字列の使用と操作を通じて特定の問題を解決するための競争。

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 …

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


3
ラテン語の判断
約5秒を超えると何のタスクにも集中できなくなるため、単語をサブストリングに分割することがよくあります。サブストリングはそれぞれ長さが異なり、繰り返し文字が含まれていません。たとえば、「パスタ」という単語を「過去」と「a」、「パス」と「タ」、または「パス」と「スター」に分割すると、画像が表示されます。 ただし、すべての組み合わせを覚えるのは難しいため、通常は1つだけを選択し、最も優れた組み合わせを選択します。最も良い方法は、「スコア」が最も低い方法であると考えています。あなたの仕事は、単語を与えられて、以下の複雑なルールを与えられて、そのスコアを印刷することです。 得点 単語の採点方法の説明: 単語はラテン文字の文字列であり、大文字は同じ小文字の2で置き換える必要があります(したがって、「ボックス」は「bbox」になります)。 セグメントは単語の連続した(厳密な)サブストリングであり、文字を2回含めることはできません( "her"、 "re"、 "h"はすべて "Here"( "hhere")の有効なセグメントですが、 "hh"そして「エレ」はそうではありません) セグメンテーションは、長さが異なる一連のセグメントであり、結合すると元の単語を形成し(「tre」と「e」は「tree」を作成)、セグメンテーション内でそれ以上セグメント化できません(つまり、「ba」には単一のセグメンテーション、「ba」、および「alp」と「habet」は、「alphabet」の有効なセグメンテーションではありません。これは、これらのいずれかをさらにセグメント化できるためです(たとえば、現在「a」と「lp」と「habet」)。有効なセグメンテーション(「habet」は、長さ2または1)のセグメントを形成しないとセグメント化できません)))。 セグメンテーションのスコアは、元の単語に出現する個別の各文字のスコアの合計です(大文字が置き換えられた後)。 キャラクターのスコアリングは以下で説明されています 単語のスコアは、最も良い可能なセグメンテーションのスコアです(スコアが最も低い)。 単語に有効なセグメンテーションが存在しない場合(たとえば、 "Brass"( "bbrass")。最初の "b"と最後の "s"は独自のセグメントになければならないため、セグメント化できません。同じ長さの2つのセグメント)の場合、テキスト「evil」を出力する必要があります。それ以外の場合は、単語のスコアを出力する必要があります。 キャラクター採点 文字のスコアリングは、文字が出現する回数、および出現するセグメントの重み付けに基づいています。セグメントの重み付けは、セグメントの長さと、すべてのセグメントの長さの最小公倍数によって異なります。セグメンテーション。 segment weighting = lowest common multiple of lengths segments / length of segment 「ol」と「ive」に分割され、同じ領域の2つのボックスとして視覚化された「olive」という単語を考えます。1つは重み3の「ol」、もう1つは重み2の「ive」(LCMの6)。 ol ol ive ol ive これは、3つの「ol」から作られた2つのボックスと2つの「ive」から作られた1つのボックスを表すことを意図しています。あるいは、 "o"と "live"(LCM of 4)の場合もあります。 o o o …

8
特権部分文字列を検索
特権文字列 特権文字列のセットは、次のように再帰的に定義されます。 長さが0または1のすべての文字列は特権付きです。 プレフィックスとしてとサフィックスとして1回ずつ、正確に2回出現sする短い特権文字列が存在する場合、少なくとも2 文字の長さの文字列が特権となります。重複する発生は、個別としてカウントされます。ts たとえば、文字列aa、aaaおよびabaは特権ですがab、そうでaabはありません。 入力 英数字の文字列。 出力 入力文字列のすべての特権付きサブ文字列(それぞれ1回だけ、任意の順序)。出力は、言語のネイティブ配列形式(またはそれに最も近いもの)で指定するか、1行に1つの部分文字列を出力できます。 楽しい事実 出力の文字列の数は常に正確ですlength(s) + 1(source)。 ルール 機能と完全なプログラムの両方が許可されています。最も低いバイト数が優先され、標準の抜け穴は許可されません。 テストケース これらは最初に長さ順に、次にアルファベット順にソートされますが、どのような順序でもかまいません。 "" -> [""] "a" -> ["","a"] "abc" -> ["","a","b","c"] "abcaaabccaba" -> ["","a","b","c","aa","cc","aaa","aba","abca","abcca","bccab","bcaaab","caaabc"] "1010010110101010001101" -> ["","0","1","00","11","000","010","101","0110","1001","01010","10001","10101","010010","101101","0101010","1010101","01011010","10100101","1010001101","1101010100011","00101101010100","011010101000110"] "CapsAndDigits111" -> ["","1","A","C","D","a","d","g","i","n","p","s","t","11","111","igi","sAndDigits"] リーダーボード これは、MartinBüttnerの好意による言語別のリーダーボードです。 回答が確実に表示されるようにするには、次のMarkdownテンプレートを使用して、見出しから回答を始めてください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを向上させる場合は、古いスコアを打ち消すことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 …

2
Rosetta Stoneチャレンジ:Run-Length Encoding v2.0
ロゼッタストーンチャレンジの目標は、できるだけ多くの言語でソリューションを作成することです。あなたのプログラミング多言語主義を自慢して見せてください! チャレンジ ランレングスエンコーディングを最初に実行しましたが、単一文字のランのみを考慮しました。もちろん、複数の文字の実行を考慮すると、さらに節約できる場合があります。 例を挙げましょうaaaxyzxyzxyzdddd。これはに圧縮できます3a3{xyz}4d。あなたの仕事は、大文字と小文字を区別する文字とスペースの文字列を与えられ、複数文字の実行に対してランレングスエンコーディングを使用して最適に圧縮する関数のプログラムを書くことです。 関数の引数STDINまたはARGVを介して入力を受け取り、結果を返すか、STDOUTに出力できます。 実行は入れ子にしてaaabbbaaabbbはいけません。したがって3a3b3a3b、ではなく 、でなければなりません2{3a3b}。つまり、文字列は1回のパスでエンコード(またはデコード)する必要があります。 最適な圧縮の結果 ランレングスエンコーディングの素朴なアプリケーションが次善の結果をもたらす可能性があるいくつかの例: abab 「圧縮」してはならない 2{ab} aaaabcdeabcde圧縮されてはならない4abcdeabcdeが、3a2{abcde}その代わり。 2つの最適なバージョン(例:aaand 2aまたはabcabcandおよび2{abc})がある場合、どちらの結果でも問題ありません。 例 Input Output aa aa -or- 2a aaaaaAAAAA 5a5A ababa ababa abababa a3{ba} -or- 3{ab}a foo foo bar 2{foo }bar aaaabcdeabcde 3a2{abcde} xYzxYz xYzxYz -or- 2{xYz} abcabcdefcdef abcab2{cdef} pppqqqpppqqq 3p3q3p3q pppqqqpppqqqpppqqq 3{pppqqq} 得点 各言語は、最短のエントリーを書ける人に関して個別のコンテストですが、全体的な勝者は、これらのサブコンペティションのほとんどを勝つ人です。これは、多くの珍しい言語で答える人が有利になることを意味します。コードゴルフは、言語に複数の解決策がある場合のタイブレーカーです。プログラムが最も短い人がその言語の功績を認められます。 同点の場合、勝者は2番目に多く送信された人(以下同様)になります。 …

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での関数宣言など)は、バイトカウントに含まれていません。 …

17
他の文字列での文字列の出現を確認します
チャレンジ きっとあなたはタイトルを読んで、あなたの担当者を養成するためにやって来て、その子供たちのことを考えていましたが、もう一度考えてください!別の文字列の出現を数えるには、最短のコードで互いに挑戦し合う必要があります。たとえば、次の入力があるとします。 aaaabbbbsssffhd 文字列として、文字列 s 出力する必要があります 3 ルール あなたが笑顔で「ねえ、私は----を使います」と言う直前にこれを読んでください: 外部ライブラリや言語のAPIを使用しないでください。手動で実装する必要があります。つまり、言語の組み込み関数またはメソッドを使用して出現回数をカウントすることはできません。 ファイルI / Oなし サーバー、ウェブサイトなどに接続しない `aba`の場合、` aba`で始まり、最後の3文字を読んだ場合も `aba`であれば、1つだけカウントします* @ProgramFOXに感謝します(最後のルール)! * ヒント:発生をカウントするときに、カウントしたものを削除して、このルールに従わないようにすることができます 最後の2つのルールはルールベンダーのためだけのものだと思います! 受賞基準 前述のように、勝者は使用されるバイト数が少ないコードです。当選者は5日後に発表されます(2014年6月15日)。 私の小さな答え ここでは、それは私のことを前提としてC ++の答え、だli変数がで出現箇所を確認するための文字列を保持しており、l中を探すための文字列ですf。 未ゴルフ int c = 0; while (li.find(lf) != string::npos) { int p = li.find(lf); int l = p + lf.length() - 1; for (p …

6
車が限られた量のガスでルートを迂回できるかどうかを判断する
関数をサポートするプログラミング言語を使用して、関数を持っている is_enough(strArr) そのテイクstrArr以下の要素からなる配列であろう。 N これは循環ルートのガソリンスタンドの数になります 後続の各要素は文字列g:cに なります g そのガソリンスタンドでのガロン単位のガス量であり、 c 次のガソリンスタンドに行くのに必要なガロンのガスの量になります。 たとえば、次のようにstrArrなります。 ["4","3:1","2:2","1:2","0:1"]. あなたの目標は、ルート全体を1度移動できる開始ガソリンスタンドのインデックスを返すことです。それ以外の場合は、文字列"impossible"を返します。 上記の例では4つのガソリンスタンドがあり、次の理由により、プログラムは文字列「1」を返す必要があります。 駅から始まる1あなたが受け取る3ガスのガロンをして過ごす1を次のステーションになって。 次に、あなたが持っている2ガロン+ 2次の駅でより多くを、あなたが過ごす2をあなたは持っているので、2サード駅に着くときガロン。 その後、3つありますが、最後の駅まで2つ費やします。 最終ステーションでは0ガロンを受け取り、最終ガロンを出発点に到達させます。 他のガソリンスタンドから出発すると、ルートを回避できなくなるため、答えは"1"です。 開始可能なガソリンスタンドが複数ある場合は、(ガソリンスタンドの)最小のインデックスを返します。Nになります>= 2。 正しいサンプル出力: Input: ["4","1:1","2:2","1:2","0:1"] Output: "impossible" Input: ["4","0:1","2:2","1:2","3:1"] Output: "4" 勝者は長くなりますが、最短のコードを使用する人になります。

3
PHPゴルフのヒント:ファイルの読み書きとCLI
私はゴルフは最近、およびなどのファイルからデータを読み取るために使用されている技術のいくつかの課題PHPコードの数に参加しているfopen()とfread()か、file_get_contents()本当に私のコードchar型の数に打撃を与えます。特に、コマンドライン入力を読み込むために提供されるメソッド。 私の質問は、ファイルの内容を読み書きする最速の方法(最小キーストローク)と、プロンプトから行を読み込む最速の方法(最小キーストローク)は何ですか? (注:これはコードゴルフなので、外部ライブラリは使用できません。)

1
ランダムセンテンスジェネレーター
コンテキストフリーの文法stdinと生成する文の数を読み取り、文法からその数のランダムな文を生成する任意の言語でできる限り短いプログラムを記述します。 入力 入力は次の形式になります。 n <START> {"<A>":["as<A>df","0<A>","<B><C>","A<A>", ...], "<B>":["1<C>1","\<<T>>",...], ...} n生成する文の数です。 <START>開始の非終端記号の識別子です。 文法は{}で囲まれ、次のようにフォーマットされます。 ルールは次の形式"<S>":[productions]です。 <S>非端末の識別子です。 ルールはコンマで区切られます。 ルールの右側は、二重引用符で囲まれた文字列で、最初と最後の文字はそれぞれ「<」と「>」です。残りの文字は[A-Z](大文字のアルファ)である必要があります。 productionsプロダクションを表す、二重引用符で囲まれた文字列のカンマ区切りのリストです。ルールを構成する空白文字を含むすべての文字は、終端記号です。ただし、山かっこ("<"と">")で囲まれている文字は、非終端記号であり、別のルールの左側になります。開き山かっこはエスケープできますが、終わり山かっこをエスケープする必要はありません。 プロダクションには、改行または改行エスケープシーケンスは含まれません。 出力 生成された各文をstdout末尾に改行を付けて印刷する必要があります。 テストケース 5組の括弧の組み合わせ: 5 <S> {"<S>":["<S><S>", "(<S>)", ""]} 結果の例: (())() () ()()() (())(()())((((()))()())) 4後置算術式(文字列内の空白は重要であり、他の場所では空白は重要ではないことに注意してください): 4 <S> {"<S>":["<N>", "<S> <S> <O>"], "<O>":["+","-","*","/"], "<N>":["<D><N>", "<D>"], "<D>":["1","2","3","4","5","6","7","8","9","0"]} 結果の例: 1535235 76451 + 973812 312 734 …

6
解雇される前にパンを一斤作ってください!
バックストーリー 本当に本物じゃない、sshh! ある日、同僚が上司の誕生日に自家製のパンを持ち込んだとき、それはすべて始まりました。 私の上司は本当にこのパンの塊が好きで、彼は別のパンを望んでいました。残念ながら、私の同僚は辞めたので、上司は私に彼に別の塊を与える必要があります。 問題は、私は持っていない、あるないアイデアパンを作る方法を。だから私は上司に、私はシェフではなく、そうでない人にはもっと厳しく見えるように言いました。 彼は言った、「確かに...でも、私がパンを作ることができないなら、あなたはあなたの仕事を失います。」 それから私は考えを持ちました。 私は彼を私のコーディングスキルでアスキーアートのパンにします!彼は、1つの条件の下で「はい、351バイト未満で作成する必要があります」と述べました。残念ながら、私の最高のコードゴルフでは375バイトになりました。ええとああ。 次に、上司は2つのことを追加しました。「そのパンを1週間(4/13)で与える必要があります。そうすると、給与が増えます。使用するバイト数が少ないほど、給与は高くなります。ただし、 349を超えると失業します。」 だから私の仕事を続けるためにあなたが選んだ言語であなたの助けが必要です! ルール curl ... | shTinyURLで実行しようとしていましたが、上司から抜け穴のリストを使用できないと言われました。私はおそらくルールを回避することができますが、私の仕事は危機に瀕しているので、それは良い考えではありません。 パンとして数えるもの プログラムまたは関数は、3つの正の整数を入力として受け取る必要があります。言語にリストまたは配列がある場合、それらの数値のリストまたは配列を取ることができます。関数またはプログラムの引数として、またはSTDINへのスペースで区切られた数値の文字列、コマンドラインまたは関数の引数などとしても使用できます。 最初の数字はあなたのパンの幅です 2番目の数値は、パンの高さです。 3番目の数値は、パンの深さです。 幅が3、高さが2、奥行きがのパンです1。 / --- \ / --- \ | | || | ___ | / 奇妙に見える?これは3x2x2です。 / --- \ / | / --- \ | | | / | ___ …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.