編集:あなたがLispを使用している場合、バイト数をカウントする際の下部にいくつかのガイドラインを示しました。
目的:正規表現を使用せずに、文字列を数字以外で分割し、各文字列の数字のみで構成される配列を返す最短の関数を作成します。先行ゼロは各文字列に含まれます。
現在の順位(カテゴリで区切られた):
- C / C ++ / C#/ Java: 68(C)....
- GolfScript / APL / J: 13(APL)
- その他すべて: 17(Bash、使用
tr
)、24(Ruby)
ルール:
(長さをおaびします)
- 形式は、単一の文字列引数を持つ関数でなければなりません。配列を適切に返すために必要な場合は、最大2つの引数を追加できます(たとえば、sh / csh / DOS Batchは返すために追加の変数参照を必要とします)。
- 主要な関数宣言はカウントされず、他の標準ライブラリのインポートもカウントされません。「#include」、「import」、および「using」はカウントされません。他のすべてが行います。これには、 `#define`sとヘルパー関数が含まれます。混乱させて申し訳ありません。カウント/カウントしないもの(Cスタイルの構文で記述されている)についての有用なガイドとしてこれを参照してください。
//合計にはカウントされません。ただし、 // Javaの標準ライブラリの半分のように、非自明。 #include <stdio.h> import some.builtin.Class //カウントされません、上記を参照 #define printf p //合計にカウント / *その他のプリプロセッサディレクティブなどがカウントされます。* / int i = 0; //カウント someFunction(); //カウント char [] [] myMainSplitFunction(char [] [] array){//カウントしません //ここにあるすべてがカウントされます return returnArray; //これも重要です。 } //カウントしない / *宣言を含むここのすべてがカウントされます* / char [] [] someHelperFunction(char [] string){ //もの } //これもカウント
- 出力は、文字列配列または類似のものである必要があります(Javaなどの配列リストも使用できます)。受け入れられた出力の例:
String[]
、char[][]
、Array
、List
、およびArray
(オブジェクト)。 - 配列には、可変長の文字列プリミティブまたは文字列オブジェクトのみが含まれている必要があります。以下の例外を除き、戻り値に空の文字列が存在しないようにする必要があります。注:文字列には、以下の入力および出力の例のように、連続した一致の文字列が含まれます。
- 一致するものがない場合、関数本体は
null
、空の配列/リスト、または空の文字列を含む配列/リストを返します。 - 外部ライブラリは許可されていません。
- DOS行末は2バイトではなく1バイトとしてカウントされます(すでにメタでカバーされていますが、強調する必要があります)
- そしてここでの最大のルール:正規表現は許可されていません。
これはコードとゴルフの問題なので、最小サイズが優先されます。幸運を!
次に、入力と出力の例をいくつか示します(Cスタイルのエスケープ付き)。
入力: "abc123def456" 出力:["123"、 "456"] 入力: "aitew034snk582:3c" 出力:["034"、 "582"、 "3"] 入力:「as5493tax54 \\ 430-52@g9.fc」 出力:["5493"、 "54"、 "430"、 "52"、 "9"] 入力: "sasprs] tore \" re \\ forz " 出力:null、[]、[""]、または同様
回答で使用されたバイト数を入力してください。いつものように、楽しいゴルフを!
Lispのガイドライン
Lispの方言で考慮すべきこととしないことは次のとおりです。
;;; オプション1 (defun extract-strings(ab);カウントしません (もの);;; ここにあるすべてが重要です ); 数えません ;;; オプション2 (defun extract-strings(string&aux(start 0)(end 0));カウントしません (もの);;; ここにあるすべてが重要です ); 数えません。他のすべてのラムダは、バイトカウントに完全にカウントされます。