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

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

6
明確なリバーシブルプリミティブバイナリネックレス
はじめに-ネックレスとは? ネックレスはOEISの人々が夢中になっているものです。OEISチャレンジには、ネックレスのシーケンスが5つあります。 長さのバイナリネックレスは、またはnであるnビーズのループです。2つのネックレスは、一方を回転させてもう一方にすることができれば同じです。2つのリバーシブルネックレスは、一方を回転、反転、または反転して回転させてもう一方にすることができる場合は同じです。01 プリミティブネックレスは、一連のビーズのチェーンの複数のコピーとして表現できないネックレスです。ネックレスがプリミティブでないと見なされるためには、コピーがすべて同じ順序で(逆転なしで)組み立てられる必要があることに注意してください。 たとえば、このネックレスを見てみましょう0 1 1 0 1 1。0 1 12回繰り返されていると表現できるため、プリミティブではありません。0 1 0 1 1原始的です。 0 1 1 0同じ文字列0 1と1 0は見なされないため、プリミティブです。このネックレスは、1 1 0 0左に1つのビーズを回転させてこのネックレスにすることができるため、同等ですが、0 1 0 1(プリミティブではありませんが)同等ではありません。 チャレンジ 負でない整数を指定するとn、長さが異なる可逆的なプリミティブバイナリネックレスの数を返しnます。それぞれ単一の整数として入力および出力します。 このシーケンスの最初の数項は1, 2, 1, 2, 3, 6, 8, 16, 24, 42, 69, 124, 208, 378, 668, 1214, 2220, 41100インデックスです。 これはOEIS A001371です …

8
小石の山と山
私の仕事は、小石を三角形の山に積み上げることです。私はこれを1世紀だけ続けてきましたが、すでにかなり退屈です。最悪の部分は、すべての杭にラベルを付けることです。小石を最大サイズの山に分解する方法は知っていますが、山の数を最小限に抑えたいです。手伝ってくれますか? 仕事 整数を指定すると、それを最小数の三角数に分解し、その最小数を出力します。 三角形の数 三角数は、ある値について、最初のn自然数の合計として表すことができる数ですn。したがって、最初のいくつかの三角形の数は 1 3 6 10 15 21 28 36 45 55 66 78 91 105 例 例として、入力がであるとしましょう9。三角数ではないので、三角数の和として表現できません1。したがって、三角形の数の最小値は2であり、で取得でき[6,3]、の正しい出力が得られ2ます。 別の例として、入力がであるとしましょう12。最も明白な解決策は、貪欲なアルゴリズムを使用し、一度に最大の三角形の数を削除して[10,1,1]、の出力とを生成することです3。ただし、より適切な解決策があります:[6,6]、の正しい出力を生成します2。 テストケース in out 1 1 2 2 3 1 4 2 5 3 6 1 7 2 8 3 9 2 10 1 11 2 12 2 13 …

4
誰がゴーストを勝ちますか?
ゴーストのゲームは、各ターンで交互に手紙を言う2人のプレイヤーの間で行われます。各時点で、これまでの文字は有効な英語の単語で始まる必要があります。敗者は、最初に完全な単語を完成させるプレーヤーです。したがって、たとえば、これまでの文字がEAGLの場合、有効な次の文字は "E"だけなので、次のプレイヤーは負けます。(「イーグルト」のような長い言葉があっても) チャレンジ あなたは、これまでの手紙を踏まえて、2人の完璧なプレーヤーを想定して勝者を決定するプログラムまたは関数を作成することになります。入力は、ゲームの現在の状態を表す文字列と、有効な単語の辞書を表す文字列のリストです。出力では、次に行くプレーヤーが勝つか負けるかを区別する必要があります。 細部 コードは、現在の状態が空の場合を処理する必要があります。ただし、辞書のどの単語も空ではないと想定できます。 各入力文字列は小文字のASCII文字、つまりazのみで構成されていると想定できます。 現在の状態を想定し、辞書内のすべての単語の最大文字数はそれぞれ80文字です。 辞書は空でないことが保証されています(有効な最初の移動がない場合を回避するため)。 「現在の状態」が有効であると想定することができます。現在の状態で始まる単語が必ずあるはずです。また、現在の状態がフルワードになることも、現在の状態のプレフィックスがフルワードになることもありません。 辞書は、「英単語」がゲームで有効であると見なされるルールに従って事前にフィルターされます。たとえば、3文字以下の単語でゲームがまだ終了しないバリアントの場合、辞書は4文字以上の単語のみが含まれるように事前にフィルタリングする。 辞書は事前に分類されていると想定できます。 例 辞書が次のとおりだとします。 abbot eager eagle eaglet earful earring 次の現在の状態の場合、出力は次のようになります。 Current state Result ============= ====== loss a win eag win eagl loss ear win earf win earr loss 同様に、https://raw.githubusercontent.com/dschepler/ghost-word-list/master/wordlist.txt(Debianシステムでを使用して作成pcregrep '^[a-z]{4,80}$' /usr/share/dict/american-english)の単語リストの場合、可能なセッションは次のとおりです。 Current state Result ============= ====== win h loss …

7
Wordグリッドの生成
指定された入力を使用してn、n可能な限り数バイトのサイズの単語グリッドを生成します。 細部 提供される数は常に奇数です。グリッドの中央の正方形は常に空でなければなりません(スペース文字)。グリッドを埋める文字は、英語のScrabble文字分布からランダムに選択する必要があります。つまり、各タイルは、次の100文字からランダムに、一定の確率で選択する必要があります。 ??EEEEEEEEEEEEAAAAAAAAAIIIIIIIIIOOOOOOOONNNNNNRRRRRRTTTTTTLLLLSSSSUUUUDDDDGGGBBCCMMPPFFHHVVWWYYKJXQZ どこ?空白のタイルを示しています。 スクラブルボードと同様に、このボードの一部のタイルは、より高いスコアのボーナスタイルにもなります。これらのタイルは、サイズが9以上のボードでのみ表示されます。中央の正方形から3行ごとに外側に向かって広がるパターンで表示されますが、最も外側の文字には表示されません。ボーナススクエアは小文字で示され、空白のタイルはの!代わりにとして識別されます?。ボーナスタイルを正しく分配する方法の例については、この視覚的なデモまたはリファレンス実装を参照してください。 例 入力: 5 出力: VNZNT IFOSN UD VD ZIOO? KTLED 入力: 9 出力: UWDESTKPW ItDBaDEdI TERMDYSTR ROANJLEFT EkCI OOsT IPAJPGM?Y MZLORETVI G!EGgPUeI MNROYOEER リファレンス実装。 ルール これはコードゴルフなので、バイト単位の最短コードが優先されます。 整合性があると想定して、I / Oには適切な形式を使用できます。 少なくとも999までのグリッドを処理できる必要があります。 すべての標準の抜け穴は禁止されています。

4
文字列をWicka-wub
これに触発されました。 大文字と小文字のアルファベット文字のみで構成される入力として文字列が与えられた場合、それをwicka-wubします。 文字列をウィッカウブする方法は? 使用されるテキスト例は「DJMcMayhem」です。 各大文字の前で文字列を分割すると、が得られ["D", "J", "Mc", "Mayhem"]ます。 次に、リストの2つの半分をサブリストとして扱います。これは私たちに与え[["D", "J"],["Mc", "Mayhem"]]ます。リストの長さが奇数(つまり3)の場合、最初のサブリストには中央の部分文字列(つまり[[a,b], [c]])が含まれます。 wickaとwubのリストを作成します。wickas の数は、入力リストの最初の部分(つまり["D", "J"] -> ["wicka", "wicka"])wubsの長さと同じでなければなりません。また、の数は、入力リストの2番目の部分の長さと同じでなければなりません。私たちの場合、これはを与え["wicka", "wicka", "wub", "wub"]ます。 ここで、入力リストのサブリストを単一の文字列に結合し、フラット化します。 現在とが["DJ", "McMayhem"]あり["wicka", "wicka", "wub", "wub"]ます。 参加wicka/ wubでリスト-秒:wicka-wicka-wub-wub。先頭に-。入力に複数の大文字がある場合は、もう1つを追加します-。 今、とが ["DJ", "McMayhem"]あり"-wicka-wicka-wub-wub-"ます。 追加wicka-wub取得するには、入力リストの最初の項目の末尾に文字列を["DJ-wicka-wicka-wub-wub-","McMayhem"]。 最後に、文字列の2番目の部分の文字を、元の入力文字列の0インデックス値で繰り返します。私たちの例では、それは最初のものMが2回繰り返され、次にc3回、そして次のM4回繰り返されることを意味します。リストに参加すると、2番目の部分(文字を繰り返し入力した部分)が最初の部分("DJ-wicka-wicka-wub-wub-")に追加されます。 入力の最終結果: "DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm" 総プロセス: ["D", "J", "Mc", "Mayhem"] => [["D", "J"], ["Mc", "Mayhem"]] => ["DJ", "McMayhem"] and …

16
最初のスパイラル、次に斜め
正の入力番号を指定してn、左上を時計回りに内側にらせん状にして、1〜の数のらせんを作成します。対角線の合計を取り(奇数の場合、真ん中の数は2回カウントされます)、その数を出力します。n^21nn^2 の例n = 1: 1 (1) + (1) = 2 の例n = 2: 1 2 4 3 (1+3) + (4+2) = 4 + 6 = 10 の例n = 4: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 (1+13+15+7) + (10+16+14+4) = 36 …

10
これらの日は私のために働く
バックグラウンド あなたは魅力的なコードゴルファーであり、かなりの数の人々があなたに尋ねています。 あなたは正確にあなたが利用できる日を考える時間がないので、日付を受け入れてその週の曜日を返す関数を作成することに決めました。 次に、それらの曜日を取り、それをカレンダープログラムに挿入して、他の誰かがすでにあなたに依頼していないかどうかを確認します。 ルール YYYY-MM-DD形式の日付を受け入れます その週の日付の配列/リストを返します。(日曜日が最初の日です) 日付は、1970年1月1日からその日付までのミリ秒単位で、「一般的な」日付形式1または日付オブジェクトで表示できます。 日付の順序は昇順でなければなりません。 (あなたは降順リストのサポートを含めるのに十分賢いですが、プログラムは昇順リストで最も速く動作することができ、誰に数ミリ秒の余裕がありますか?) 1993年以降、いつでも一緒に仕事をする必要があります(はい、あなたは執筆時点で24歳です!) すべてのJavascriptの回答はハイファイブを獲得します! スペック 入力例: whichDates(2017-08-29) 出力:(同等のもの) console.log([ Date.parse('2017-08-27'), Date.parse('2017-08-28'), Date.parse('2017-08-29'), Date.parse('2017-08-30'), Date.parse('2017-08-31'), Date.parse('2017-09-01'), Date.parse('2017-09-02'), ]); コードスニペットを実行するHide resultsスニペットを展開 1かなりよく知られているフォーマット。YYYY-MM-DDなど。 2これはコードゴルフです!言語ごとの最短コードが優先されますが、全体的に最短のコードはエメラルドチェックマークを取得します。
8 code-golf  date 

4
ナビゲーターになる
ああ、いや、私はマラコフの素晴らしい宝物を見つける途中で道に迷っています!そして、私が持っているのは、これらの役に立たない指示のように見えるだけですS10R10D30...私はそれらが何を意味するのか分かりません!手伝って頂けますか? チャレンジ からなる方向を指定してN E S W U D L R 1 2 3 4 5 6 7 8 9 0、これらの方向(つまり、ユークリッド距離)をたどったときに、開始地点からの距離を出力します。 N E S W 私が北、東、南、西を回っているのを参照してください。 U D L R私が上、下、左、右を回していることを参照してください(そうNRはと同じEですSL。そうです;はとSLL同じですN)。アップとは、前進し続けることを意味します。ダウンとは、向きを変えることを意味します。 各文字の方向の後に数字が表示されます。これは、その方向に進む距離です。N10E20つまり、北に10ユニット移動してから、東に向けて、20ユニット東に移動します。 入力詳細 入力は常に次のいずれかで始まりNESWます(したがって、空白の入力を考慮する必要はありません)。 続けて2文字の指示が許可されます。NE「北に曲がって、すぐに東に曲がってください」と解釈されるべきです。それはちょうど同じEです。SLL「南に曲がって、すぐに左に2回回す」です。と同じNです。 すべての数値は整数になります(.文字セットに含まれていないことに注意してください) 入力は次のもののみで構成されますNESWUDLR1234567890(Cの '\ 0'のような何か他のものが必要な場合、または言語の入力関数に末尾の改行がある場合は、それで問題ありません)。 出力 規範。 関数を使用する場合、数値データ型または文字列を出力する必要があります。 小数点以下3桁まで正確でなければなりません。 テストケース N10: 10 N10E10: 14.1421 N10S10: 0 NSEWUDLR10: 10 …
8 code-golf 

11
逆ASCII文字マップ
[ 入力されたASCII文字をマップする]で、..入力されたASCII文字をマップするように求めました。今回は、すべてのASCII文字をすぐにマッピングしてから、その上にスペースをマッピングすることで、反対のことを行います。 このプログラムには、制限付きソースのチャレンジ送信で残したキャラクターを確認するなど、実用的な用途があります。 チャレンジ あなたの仕事は、入力されたASCII文字をアンマップするプログラムを書くことです。プログラムが実行されるとすぐに、正確なマップ(色、フォント、サイズなどを除く)が表示されます。 ユーザーが印刷可能なASCII文字を入力するたびに、その上にスペースを印刷します。 ルール 最初の出力は、上記の最初の画像に示すとおりである必要があります。それぞれの位置にASCII文字があり、スペース(32)が左上にあり、チルダ(126)が右下から1文字左にある6x16グリッドです。 あなたのプログラムは、印刷可能なASCII文字を表示する必要がある0x20に0x7E。 プログラムは終了し、すべての印刷可能なASCII文字が上書きされるまで、文字の上にスペースを印刷し続けてはなりません。ここから、プログラムは終了するか、Neverlandに実行されます。 リバースマップはリアルタイムで更新する必要があります(ユーザー入力を受け取ったらすぐに)。 プログラムが入力をサイレントで読み取らない場合は、カーソルを邪魔にならないように配置する必要があるため、テキストがマップの邪魔になりません。 参考のために役立つASCIIテーブルを以下に示します。 得点 各言語でバイト数が最も少ない答えが優先されます。楽しんで!

5
ラティスを分割しましょう
n×nの格子があるとしましょう。次に、ラティスに線を引くことにより、ラティスを2つのセクションに分割できます。ラインの片側にあるすべてが1つのセットにあり、他のすべてが別のセットにあります。 この方法でラティスを分割する方法はいくつありますか? たとえば、2×2の格子を考えてみましょう。 . . . . 次のように、ラティスを半分に分割する2つのパーティションを作成できます。 × × × o o o × o 各コーナーを分割することもできます。 × o o × o o o o o o o o × o o × 最後に、格子を完全になくすことで、すべてのポイントを1つのパーティションに配置できます。 × × × × これにより、合計7つのパーティションが作成されます。次のパーティションは単一の直線では作成できないため、有効ではないことに注意してください。 × o o × これは3×3の格子です . . . . . . …

3
秘密のメッセージパート1、要素
あなたとあなたの友達はお互いに秘密のメッセージを送りたいと思っています。しかし、あなたは陰謀論者であり、政府が標準の暗号化を解読できる量子コンピューターを持っていると思うので。したがって、あなた自身の1つを発明しています。この最初のステップは次のとおりです。入力文字列を取得して、すべての文字が周期表の要素の記号で表せるかどうかを確認します(大文字と小文字は区別されません)。可能であれば、各セクションをシンボルが表す要素の名前に置き換えます。この方法ですべての文字を置き換えることができない場合は、元の文字列を使用するだけです。 あなたのタスク: 前述のように、メッセージをエンコードするプログラムまたは関数を記述します。プログラムが外部ソースからデータをフェッチする場合、外部ソースのサイズをバイトカウント(この抜け穴)に追加する必要があることに注意してください。使用される要素と記号は次のとおりです。 H Hydrogen He Helium Li Lithium Be Beryllium B Boron C Carbon N Nitrogen O Oxygen F Fluorine Ne Neon Na Sodium Mg Magnesium Al Aluminum Si Silicon P Phosphorus S Sulfur Cl Chlorine Ar Argon K Potassium Ca Calcium Sc Scandium Ti Titanium V Vanadium Cr …

16
制限付き整数パーティション
P k(n)は、n正確にk部分に分割される量を意味します。とを与えnてk、P k(n)を計算します。 ヒント:P k(n)= P k(n−k)+ P k−1(n−1)、n≤0またはkの場合、初期値p 0(0)= 1およびp k(n)= 0 ≤0。[Wiki] 例 n k Ans 1 1 1 2 2 1 4 2 2 6 2 3 10 3 8 ルール 一般的なコードゴルフ規則が適用されます。

5
作家は男性ですか、女性ですか。
このようなWebサイトの問題の1つは、男性と話しているのか女性なのかわからないことがよくあることです。ただし、テキストの作者の性別を判別するために使用できる簡単なNLP手法を考え出しました。 理論 英語で使用されている文字の約38.1%が母音[a、e、i、o、u]です(以下の参考文献を参照してくださいy。この場合は母音ではありません)。したがって、母音が40%以上の単語は女性の単語として定義し、母音が40%未満の単語は男性の単語として定義します。 この定義の他に、単語の男らしさや女性らしさを見つけることもできます。してみましょうCは言葉で子音の数であり、Vは母音の数であります: 単語が女性である場合、それは女性らしさです1.5*V/(C+1)。 単語が男性的である場合、それは男性らしさですC/(1.5*V+1)。 たとえば、単語catchは男性です。その男らしさは4/(1.5*1+1) = 1.6。言葉phoneは女性的です。その女性らしさは1.5*2/(3+1) = .75。 アルゴリズム テキストの一部の作家の性別を把握する、我々はすべての男性的な単語(Σの男らしさの合計取るM)、およびすべての女性のワード(Σの女性らしさの合計Fを)。Σ場合はM >Σ F、私たちは、作家が男性であることを決定しました。それ以外の場合、著者は女性であると判断しました。 信頼レベル 最後に、信頼水準が必要です。ライターが女性であると判断した場合、信頼度はです。ライターが男性であると判断した場合、信頼度はです。2*ΣF/(ΣF+ΣM)-12*ΣM/(ΣF+ΣM)-1 入力 入力は句読点を含む英語のテキストです。単語はすべてスペースで区切られます(改行や余分なスペースを気にする必要はありません)。一部の単語には文字以外の文字が含まれているため、無視する必要があります(「You're」など)。文字以外の単語(「5」や「!!!」など)に遭遇した場合は、無視してください。すべての入力には、少なくとも1つの使用可能な単語が含まれます。 出力 ライターの性別に応じてMまたはFを出力し、その後に信頼度を出力する必要があります。 例 There's a snake in my boot. 性別+各単語の男性性/女性性: [M1.0,F1.5,F.75,F.75,M2.0,F1.0] Σ M = 3.0、Σ F = 4.0 CL:2*4.0/(4.0+3.0)-1= .143 出力: F .143 Frankly, I don't give a ^$*. [M2.4,F1.5,M1.2,F1.0,F1.5]、Σ M …

8
昇順の整数の組み合わせの順序付けられたシーケンス
次の出力を正しい順序で生成するプログラムまたは関数を記述します。 編集:シンボルは数学ではありません!番号は一意のデータを表し、+および-は任意の2つの任意の記号にすることができます。 負でない整数の入力nを取ります。-n = 0の場合でも、最初の行は常にです。 現在の行がの-場合、次の行は1+2+ ... (n-1)+n- n = 4:-=>1+2+3+4- 最後の整数がnに等しい場合は、最後にaが続く整数をすべて削除し、最後の整数をa -に変更+します。- n = 4:1-2+3-4-=>1-2- EDIT:文字列がいっぱいです(1からすべての整数nに含まれている)、続いている端からすべての整数を削除する-あなたが続く整数に到達するまで、+。その整数を残します+が、その次をaに変更- 上記と同じ例を使用します(これには従いません-)、削除4-、削除3-、に変更2+し2-ます。1-で止まるので変化しません2。結果: 1-2- 最後の整数がn未満の場合は、最後の整数+を除いて、残りの整数をそれぞれの後に-追加します n = 4:1+2-=>1+2-3+4- 編集:現在の文字列がいっぱいでない場合(1からnまでのすべての整数が含まれていない場合)、昇順で含まれていない各整数をn-1 +まで追加し、その後に最後の整数nを追加しますによって- 現在の行がの場合は1-、を追加2+します3+。n= 4の場合は、n-1を追加します。次に追加します4-。結果:1-2+3+4- 現在の行にすべての整数が含まれ、各整数の直後にが続いている-場合、コードを終了します n = 4:1-2-3-4-=>終了 行の先頭または末尾にスペースがあってはなりません。各行の間には改行が必要です。最終行に改行がある場合とない場合があります。 編集:あなたはコードを少なくともn = 10までテストする必要があります(1000行以上の出力なので、ここに含めることはできません)。コードがリソースを使い果たすことのない数であれば、(最終的には!)正しい出力が生成されますが、ユニバースが終了するのを待つ必要はありません。 これはcode-golfなので、バイト単位の最短コードが優先されます。 入力n = 0: - 入力n = 1: - 1- 入力n = 2: - 1+2- …

3
カードの家(バージョン2)
この2番目のバージョンのアイデアを提供してくれたFryAmTheEggmanに感謝します。 バージョン1はこちら。 それほど単純ではない課題:次の構築順序に従って、いくつかのカードが与えられた場合、その数のカードで可能な最大のカードの家を構築します。 /\ /\ /\ /\/\ -- -- -- ---- ---- /\ → /\/\ → /\/\ → /\/\ → /\/\/\ → /\/\/\ → /\/\/\ → /\ /\ -- -- -- /\/\ /\/\ /\/\ ---- ---- ---- → /\/\/\ → /\/\/\ → /\/\/\/\ → ... したがって、1階建ての家から始めて、隣接するグループを構築し、次にブリッジカードを配置し、2階にグループを構築し、1階から3階に到達するように1階からグループと橋を構築します。オン。 シングルカードはで表現される/、\または--。できるだけ多くのカードを使用した後、1枚のカードが残っている場合は、これまでに達成したことを出力します(3枚のカードの例を参照してください。結果は2枚のカードと同じです)。唯一の例外は1枚のカードの場合で、フラットカードを出力する必要があります。 例: Input: 1 …

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