「Code Bowling」というテキストを出力します


54

コードボウリング

Brunswick Bowlingに雇われCode Bowlingて、モニターにテキストを出力する簡単なプログラムを作成しました。この会社はかなりの金額の価値があるとあなたはかなりのためにそれらを詐欺することができます感じビットキャッシュの。

職務記述書には、彼らが得点に基づいて支払うことを明確に示しており、得点システムを有利に操作し、これらの人から可能な限り最大の給与を得ることができると確信しています。そうするためには、得点システムがあなたをそうすることを妨げるように設計されているにもかかわらず、あなたのプログラム/関数にできるだけ多くのコードを詰めることを要求します。

貯金箱を取り出して、コードを書きましょう!


チャレンジ

ここでの課題は、Code Bowlingここに記述されているとおりに、できるだけ高いスコアでテキストを単に出力することです。(以下のセクション:スコアリングシステムを参照)

先頭と末尾の改行(改行)は許容されます。

コードは、プログラム全体または単なる実行可能関数である場合があります。


ルール

必須:この課題は、Code-Bowling:Common Rules、Revision 1.0.0を使用しています。詳細については、メタを参照してください。

  1. 文字:バイト比
    Code-Bowlingでは、バイトカウントよりも文字カウントが優先されます。これの明白な理由は、マルチバイトのユニコード文字(例:🁴)をシングルバイトのユニコード文字の代わりに使用してバイト数を増やすことであり、ハイバイトのユニコード文字で最も多くの変数の名前を変更する人についてボウリングをより多くすることです最も戦略的に意味のある複雑なコードを作成する人よりも。

  2. 変数/関数/オブジェクト名
    すべての変数名(またはオブジェクトポインター、関数名など)は1文字である必要があります。2文字の変数名を使用する唯一の許容時間は、可能な1文字の変数がすべて使用された後です。3文字の変数名を使用する唯一の許容時間は、考えられるすべての2文字の変数が使用された後です。等。

  3. 未使用のコード
    すべてのコードを使用する必要があります。個々のキャラクター(またはさまざまなキャラクターのセット)が削除された場合、プログラムが意味することは、タスクを常に適切に完了することに失敗しなければなりません。当然、プログラムのサブセットは、プログラムの残りがなければタスクを単独で完了することはできません。

  4. コメント
    プログラム/関数で何らかの形で利用されない限り、文字数に対するコメントは許可されません。


スコアリングシステム:

  パングラムチャレンジ:

パングラムは、すべての文字を少なくとも1回使用する文です。(速い茶色のキツネは怠laな犬を飛び越えます)。

このチャレンジタイプには、完全なパングラムが理論上の最大スコアを達成するように設計されたスコアリングシステムがあります(ただし、すべてのキャラクターを少なくとも1回使用する必要はありません)。さらに、任意のキャラクターを複数回使用するとペナルティが発生します。この課題は、アルファベット文字だけでなく、それ以上にも拡大します。

  スコア指標:

  1. 使用される各キャラクターは、あなたのスコアを1増加させます。
  2. 英数字(az、AZ、0-9)を繰り返し使用すると、繰り返しごとに3ポイント減点されます(最初の使用では減点されません)。
  3. ([!?.-,":';])角括弧を含む基本的な句読点を繰り返し使用すると、繰り返しごとに2ポイント減点されます。
  4. {`~@#$%^&*_+=|\/><}中括弧を含む他のASCII文字を繰り返し使用すると、繰り返しごとに4ポイントが差し引かれます。
  5. スペース、タブ、および改行を使用すると、使用ごとに1ポイントが差し引かれます。つまり、キャラクターの合計にはカウントされません。
  6. 上記以外のキャラクター(エキゾチックキャラクター)を使用すると、1回の使用につき1ポイントが差し引かれます。つまり、キャラクターの合計にはカウントされません。

  スコアリングツール:

自動化されたスコアリングウィジェットが作成されていると見ることができるここに


これは亜種です。最高得点のプログラムが勝ちます!(の最大スコアがあるため94、最初に到達した人(到達可能な場合)は、受け入れられた回答としてマークされますが、他の人は自由に答え続けることができます)


37
私は-75kのスコアを得ることができました。これが最低スコアだったら、私は驚くほどやっているだろう。
アタコ

1
@carusocomputingヘッドデッキを試してください。おそらくまだスコアはひどいでしょう。また、非コマンドはコメントであり、削除できるため、BFを実際に使用することはできません。
mbomb007

1
デリミタはこれに適しています。なぜなら、使用する文字は実際には関係なく、文字セットの結合ASCIIだけであるためです
-MildlyMilquetoast

2
このチャレンジでは、最短のコードが良いブレイクになるでしょう!
スチューウィーグリフィン

2
たぶん誰かが他の94-ersに賞金を授与することによってそれを解決することができます
masterX244

回答:


36

グリフォ、94

ソースファイルはCP437でエンコードされます

␀␀!"☺☺#$☻♥♥☻♦♣♦♣%♠♠&•◘•◘'○○(◙♂◙♂♀♪♪♀♫☼♫☼►◄◄►↕↕)*‼¶¶‼§§+,▬↨↨▬↑↓↑↓→←→←∟∟-.↔▲▲↔/▼▼▼⌂Ç⌂Çüééüââ01ää23àååàçêçê4ëë5èïèïîî67ìÄÄì8ÅÅ9ÉÉ:;æÆÆæô<=ôöòòöûùûù>ÿÿÿÖÖ?@ÜÜAB¢££¢¥₧¥₧CƒƒDáíáíóóEFúññúѪѪGººHI¿¿J⌐¬⌐¬K½½½¼¼LM¡««¡N»»»░░OP▒▒QR▓││▓┤╡┤╡S╢╢T╖╕╖╕U╣╣V║╗║╗╝╜╜╝W╛╛╛┐X┐┐Y└└└┴┬┴┬├─├─Z┼┼┼╞╞[\╟╟]^╚╔╔╚╩╦╩╦_╠╠`═╬═╬╧╨╨╧╤╥╥╤a╙╙╙╘╘bc╒╒de╓╓fg╫╪╪╫┘┌┌┘█▄█▄▌hi▌▐j▐▐▀αα▀ßΓßΓπΣπΣkσσσµlµµτmnτΦΘΘΦΩδΩδo∞∞∞φpφφεεqr∩≡≡∩±±st≥≤≤≥u⌠⌠⌠⌡⌡vw÷xy÷≈°°≈∙∙z{·|}·√ⁿⁿ√~²²²

オンラインでお試しください!

説明

Glyphoは、実際に使用されているキャラクターをまったく気にしないので、このようなチャレンジに非常に役立ちます。代わりに、4文字の各チャンクを確認し、使用されるコマンドはこれらの4文字が作るパターンによって決定されます。

0000 n
0001 i
0010 >
0011 \
0012 1
0100 <
0101 d
0102 [
0110 +
0111 o
0112 *
0120 -
0121 ]
0122 !
0123 e

つまり、問題を解決してから、各カルテットの一意の文字を印刷可能な文字で埋め、すべての繰り返し文字をスコアリングで無視される「エキゾチックな」文字で埋めることができます。Glyphoは非常に冗長であるため、通常の手書きのソリューションには、94個の印刷可能な文字すべてを内部に収めるのに十分な固有の文字が含まれています。実際、私はちょうど94になるまでゴルフをしました。ちょうど繰り返しのキャラクターにユニークなエキゾチックなキャラクターを使用できるようにするためです(うまくいけば、プログラムを減らすのが難しくなります)。

上記のプログラムの短縮形は次のとおりです。

11+d*d*d+d+1+1+dd1+o
d+11+d*d1+*1+-+do
11+d*d1+d**do
1+o
11+d*d*d+o
<o
ddo
11+d*d++o
111++d-<+ddo
<-+do
<1+1+o
1-+1-+o

各行が文字の1つを印刷する場所。

私が使用してきました。この網膜スクリプトを使用してGlyphoに変換します0123。その後、数字の代わりに文字を入力しました。

理論的には、誰かがショートハンドプログラムをゴルフで落とし、正しいパターンが現れるようにキャラクターを再結合することができた場合、これをさらに減らすことができるかもしれませんが、これが可能であることを証明または反証する方法はわかりません。誰かが私のプログラムのサブセットから有効なソリューションを形成することができたら、それが修正されるまで答えを削除できるように私に知らせてください。それまでは、これが有効であると仮定する必要があります。


素晴らしいもの!94最大スコアなので、今のところこれを受け入れます。他の誰もが楽しみのために答え提出し続けることができます。
アルバートレンショー

素晴らしい仕事だ、マーティン!私が数時間速くなったら...:D
mbomb007

@AlbertRenshawタイブレーカーはバイトカウントである必要がありますか?:D
mbomb007

49

Python 3、82 87 88

+1スコアの@JonathanAllanに感謝

print("g!#$%&'*n+,./012i34579;<l=>?@ADEwFGHIJKLoMNOPQRSBTUVWXYZ ^_`abchejkmqsuvdyz{|}~ \x6f       C"[::-8])

オンラインでお試しください!

特別なことはなく、文字をスライスしてスキップします。文字列は逆になっているため、文字を削除したり、元の文字列を印刷したりすることはできません。


2
わあ それいいです。
マシュー盧

1
非常に良い答えですが、なぜ注文をシャッフルしましたか?HIJKLMN...もちろん、8文字目を除いて、自然に()の順序に並べる方が簡単ではありませんか?
スチューウィーグリフィン

@StewieGriffin簡単だっただろう、はい。セットを反復処理しただけで、ソートについてはあまり気にしませんでした。
TidB

このような奇妙な順序で他のキャラクターを埋めた理由はありますか?
mbomb007

2
インスピレーションTidB!私の新しい質問 :)
スティーヴィーグリフィン

17

> <>92 94

やった、私はそれをやった!

あるエキゾチックな文字\x11プログラムは(それがスタックアンダーフローです)結果を印刷した後にエラーで終了17進値では。それぞれを一度しか使用できないため、慎重に使用したミラーと方向コマンドを管理する必要がありました。

   >"vCoUV␑3`h]Z_X
       /a[f+
#$%&'r(!
.0456~8?
:;<=@9l)
ABDEFcGe
HIJKL*
MNOPQ7
RSTWYd
bgijk1
mnqst-
uwxyz2
{|}  ,
     \p^

オンラインで試す

コアプログラム:

   >"vCoUV␑3`h]Z_X
       /a[f+
     r !
     ~ ?
     9 )
     c e
     *
     7
     d
     1
     -
     2
     ,
     \p^

説明:

文字列をプッシュしますvCoUV␑3`h]Z_X >(実行ラップ)。下に移動します。スタックを逆にして、を取り外しますv

プッシュ9c(12)。乗算して取得します108l)。を押し7ます。d(13)を押し、減算し1、除算し2て取得し6ます。l(13,6)の(x、y)に置きますe。これは。この方法でもっと短くできたかもしれませんが、これは長くなるので、より多くのASCII文字を入れる余地があります。

ループに移動します。でスタックの長さをプッシュしlます。14を超える場合は文字を出力し、そうでない場合は上位10個の要素を含む新しいスタックを作成し、15を追加して実行を反映し、次に上に出力します。これは、余分なスペースを防ぎ、>最後に印刷されるのを防ぎ、ランダムに見える文字列を印刷する必要があるものに変えるために使用されます。ループを続けます。

行を短くすると(文字を削除して)、プログラムの垂直部分が整列しなくなったり、印刷する文字列が正しくなくなったりするため、プログラムは機能しなくなります。各行の前からキャラクターを削除しようとすると、スタックの深さとl配置場所が変わり、問題も発生します。


94!いいね!あなたがそこに着くとは思わなかった笑
アルバートレンショー

2
最初のバージョンの作成を開始したとき、私はいくつかを再利用できることを知っていました。それから私は、処分した"lの仕事のかなりのビットを持ちます。92に達したら、最後のを削除する方法があるはずだと確信しましたo。ただし、少し手間がかかりました。改訂履歴で確認できます。
mbomb007

16

オクターブ、20 21 22 25 27 33

これまでに管理した中で最高ののは

g=@()disp(horzcat([67 9583 -412],'e B',"nvkhmf"+!0));

これにより、f入力を受け取らない匿名関数が作成されます。あなたはそれを呼び出すことができますf()。関数本体の印刷を避けるために、最後にセミコロンが必要だと思います。

これは組み合わせることによって改善することができる可能であるevalprintf、私は試したし、何度も失敗してきました。

これは、Octaveがmod(x,256)暗黙的に数値を文字に変換するときに操作を行うという事実を調べることにより、すべての数字を1回使用します。これは、負の数値と通常の32-126範囲外の数値を使用できることを意味します。次の数字はすべて、文字iに変換されたときに文字になります... -2455 -2199 -1943 ... 105 361 ...'owling'最後に使用する代わりに、"nvkhmf"1 を使用して追加します。これにより、暗黙的に文字に変換される整数のベクトルが作成されます。の代わりに(または1を使用します。また、代わりにを使用して、2つのペナルティポイントを回避します。!0not(false)"'

最も低いスコアを与える一連の数値を見つける必要があります。Code Bowling-10 * 256-10 * 256を減算および加算すると、ストリングは次のマトリックスになります。

  -2493  -2449  -2460  -2459  -2528  -2494  -2449  -2441  -2452  -2455  -2450  -2457
  -2237  -2193  -2204  -2203  -2272  -2238  -2193  -2185  -2196  -2199  -2194  -2201
  -1981  -1937  -1948  -1947  -2016  -1982  -1937  -1929  -1940  -1943  -1938  -1945
  -1725  -1681  -1692  -1691  -1760  -1726  -1681  -1673  -1684  -1687  -1682  -1689
  -1469  -1425  -1436  -1435  -1504  -1470  -1425  -1417  -1428  -1431  -1426  -1433
  -1213  -1169  -1180  -1179  -1248  -1214  -1169  -1161  -1172  -1175  -1170  -1177
   -957   -913   -924   -923   -992   -958   -913   -905   -916   -919   -914   -921
   -701   -657   -668   -667   -736   -702   -657   -649   -660   -663   -658   -665
   -445   -401   -412   -411   -480   -446   -401   -393   -404   -407   -402   -409
   -189   -145   -156   -155   -224   -190   -145   -137   -148   -151   -146   -153
     67    111    100    101     32     66    111    119    108    105    110    103
    323    367    356    357    288    322    367    375    364    361    366    359
    579    623    612    613    544    578    623    631    620    617    622    615
    835    879    868    869    800    834    879    887    876    873    878    871
   1091   1135   1124   1125   1056   1090   1135   1143   1132   1129   1134   1127
   1347   1391   1380   1381   1312   1346   1391   1399   1388   1385   1390   1383
   1603   1647   1636   1637   1568   1602   1647   1655   1644   1641   1646   1639
   1859   1903   1892   1893   1824   1858   1903   1911   1900   1897   1902   1895
   2115   2159   2148   2149   2080   2114   2159   2167   2156   2153   2158   2151
   2371   2415   2404   2405   2336   2370   2415   2423   2412   2409   2414   2407
   2627   2671   2660   2661   2592   2626   2671   2679   2668   2665   2670   2663

したがって、['',2627 2415 2148 1893 -2528 66 -1169 -1161 2668 105 -146 103]結果はになりans = Code Bowlingます。課題は、スコアを最も低くする数字と文字のセットを見つけることです。もちろん、すべての数字を使用することは良いことですが、重複は悪いことです。すべての数字が使用され、nonが2回使用されるため、これが最適な組み合わせです。また、を使用して-、1ポイントになります。

以下の行(31ポイント)に減らすことができると主張することもできますが、その場合は「実行可能関数」ではなくなり、異なる機能を持つことになります。

disp(horzcat([67 9583 -412],'e B',"nvkhmf"+!0))

あなたも試しfunction q();disp(...)ましたか?を除いてi()、それらはうまく重なり合わない。
-Sanchises

@Sanchises私はそれをチェックアウトできます。しかし、文字列cothorzcatおよびnf文字列内ではスコアが大幅に低下します。ただし、horzcat別の方法で文字列を削除して作成した方がよい場合もありますが、その後も使用できません+!0。正直に言ってスコアを上げると驚くでしょう...それは現在の回答よりも7文字だけ長く、私が言及したものに加えて7バイトのペナルティを得るでしょう。
スティーヴィーグリフィン

1
そう私は自明でより高いスコアを得ることができませんでしたfunctionが、その後私はあなたがすでにこれを試みている可能性があると私は(PPCGに有効私の時間を費やして、あなたが知っている、とは対照的に)私の時間を無駄にすることと考えました
Sanchises

12

QBasic、34

これはフォーマットされていないコードです(大文字と小文字を区別しないためです)。QB64またはarchive.orgで実行できます(ただし、後者は入力時にコードをフォーマットすることに注意してください)。私すべてのルールを順守できたと思います。

CLS
PrINT "C
LOcatE 1, 2 : ? CHR$(957-846); "de Bowling

CLS必要である:それなしで、Cそれはと整列します、画面の左上隅に印刷することが保証されていませんode BowlingLOcatE必要である:それなしで、ode Bowling下の行に印刷されますC。削除して同じ出力を維持できるプログラムのサブセット(空白を除く)があるとは思わない。


1
オンライン通訳者へのリンクを共有できますか?repl.itでこれを実行できません。私が取得Parse failed: Syntax error at 3:36: Token(Bowling)
Stewieグリフィン

1
@StewieGriffinいくつかのオプションで編集。
DLosc

1
@StewieGriffin、これは、BasicのMicrosoft実装の癖を利用します。この実装では、文字列が行末まで続く場合、文字列の閉じ引用符はオプションです。ほとんどのマイクロソフト以外の通訳者は、欠落している引用符に反対することを期待しています。
マーク

どうやらQBasicには、私にとって非常に強い匂いの関連付けがあります。
はないチャールズ

1
@DLoscそれは私がそれから学んだ本のような匂いがし、私の家のコンピューター室が成長しているようなものです。私は今まで知らなかった。それはそれをしたLOCATE 1, 2ことでした
チャールズ

12

C、27 29

@ceilingcatのおかげで+2ポイント!

f(){char q<:]="Code B\157wling";puts(q);%>

2
提案char q<:]の代わりchar q[]puts(q);%>代わりにputs(q);}
ceilingcat

提案:出力に文字列の各セグメントを別々の機能を1.using、次いで2関数fのコード不当に長くするために構造体を使用する魔法をそれらすべてを実行
マシューノ

1
@MatthewRoh得点システムはかなり重い罰を見つけることができると思うと思う
アルバートレンショー

1
@AlbertRenshawこれらは有向グラフです
-ceilingcat

15
ハハ、最初の時間は、私が見る+2 points thanks to ...
KritixiのLithos

9

ハスケル、スコア21 38 46 47 21 70

putStr$toEnum(length"!#%&'*+,-./012345789;<=>?@ADGHIJKLMNOPQRTUVWXYZ[]^_`abcfjkqsvyz{|}~"):"ode B\x6Fwling"

オンラインでお試しください!アイデアは、C他に使用されないすべての文字を含む長さ67の文字列を作成し、この文字列の長さを文字に変換することで先頭を取得することです。私はputStr$toEnum(length""):"ode B\x6Fwling"'\x6F''\111'得られる16進数です)で始め'o'、プログラムに含まれていないすべての印刷可能なASCII文字を計算しました:

!#%&'*+,-./012345789;<=>?@ACDGHIJKLMNOPQRTUVWXYZ[]^_`abcfjkqsvyz{|}~

ちなみに、文字列に入れることができる印刷可能なASCII文字は正確に67個あり、Cそれ自体は文字列に表示することができませんputStr"Code B\x6Fwling"


以前のソリューション:(スコア21)

f|x<-'C'=mapM putStr[(:)x"ode Bowling"]

f入力を受け取らず、文字列を出力する関数を定義します。オンラインでお試しください!



@Leoすてきなキャッチ!このアプローチは、更新されたバージョン95でも文字列と減算で機能し4621ますか?(今は自分で確認する時間はありませんが、しばらくしてから調べます)
ライコニ

1
ガッチャ。結果がいかに単純かを見て、本来あるべき時間よりも長くかかった:)
Leo


8

ゼリー、94

“!#"$&('*)+-/,13.0456:79<;>=@B?ADFHJLNCPRTEVXZ\G^IKMQ`SWbY[]d_acfhjegliknmprotquvxwy{z}¹|³⁵⁷~°⁹⁻”O%2s8UḄỌ

オンラインでお試しください!

105のユニークなキャラクター、11のエキゾチック(“¹³⁵⁷°⁹⁻”ḄỌ)。

どうやって?

文字のUnicode値のLSBを使用して各ビットがエンコードされる、8ビットのリバースASCIIから文字列を形成します。

“...”O%2s8UḄỌ - Main link: no arguments
“...”         - the string enclosed            !  #  "  $  &  (  '  *  )  +  -  /  ,  1  3  .  0  4  5  6  :  7  9  <  ;  >  =  @  B  ?  A  D  F  H  J  L  N  C  P  R  T  E  V  X  Z  \  G  ^  I  K  M  Q  `  S  W  b  Y  [  ]   d  _  a  c   f   h   j   e   g   l   i   k   n   m   p   r   o   t   q   u   v   x   w   y   {   z   }   ¹   |   ³    ⁵    ⁷   ~   °    ⁹    ⁻
     O        - cast to ordinal (vectorises) [33,35,34,36,38,40,39,42,41,43,45,47,44,49,51,46,48,52,53,54,58,55,57,60,59,62,61,64,66,63,65,68,70,72,74,76,78,67,80,82,84,69,86,88,90,92,71,94,73,75,77,81,96,83,87,98,89,91,93,100,95,97,99,102,104,106,101,103,108,105,107,110,109,112,114,111,116,113,117,118,120,119,121,123,122,125,185,124,179,8309,8311,126,176,8313,8315]
      %2      - mod 2 (vectorises)           [ 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1,  0, 1, 1, 1,  0,  0,  0,  1,  1,  0,  1,  1,  0,  1,  0,  0,  1,  0,  1,  1,  0,  0,  1,  1,  1,  0,  1,  1,  0,  1,   1,   1,  0,  0,   1,   1]
        s8    - split into chunks of 8       [[1,1,0,0,0,0,1,0], [1,1,1,1,0,1,1,0], [0,0,1,0,0,1,1,0], [1,0,1,0,0,1,1,0], [0,0,0,0,0,1,0,0], [0,1,0,0,0,0,1,0], [1,1,1,1,0,1,1,0], [1,1,1,0,1,1,1,0], [0,0,1,1,0,1,1,0], [1,0,0,1,0,1,1,0], [0,1,1,1,0,1,1,0], [1,1,1,0,0,1,1]]
          U   - upend (vectorises)           [[0,1,0,0,0,0,1,1], [0,1,1,0,1,1,1,1], [0,1,1,0,0,1,0,0], [0,1,1,0,0,1,0,1], [0,0,1,0,0,0,0,0], [0,1,0,0,0,0,1,0], [0,1,1,0,1,1,1,1], [0,1,1,1,0,1,1,1], [0,1,1,0,1,1,0,0], [0,1,1,0,1,0,0,1], [0,1,1,0,1,1,1,0], [1,1,0,0,1,1,1]]
           Ḅ  - binary to int (vectorises)   [67, 111, 100, 101, 32, 66, 111, 119, 108, 105, 110, 103]
            Ọ - to character (vectorises)    ['C', 'o', 'd', 'e', ' ', 'B', 'o', 'w', 'l', 'i', 'n', 'g']
              - implicit print               Code Bowling

1
ゼリーは他の人よりも長いのですが、これはどのように可能ですか?
クリストファー

1
@DownChristopher実際には、Pythonの答えよりも短いです。しかし、Pythonの答えには繰り返しがあります。
fəˈnɛtɪk

@DownChristopher皮肉を検出できますか?
ジョナサンアラン

@JonathanAllan no Yeahゼリーがここでかなり長いことはまだ面白いと思う
クリストファー


6

枢機20 20

23個の非空白文字
%#> / NI "CodeB8 ^ o)wl、ing

繰り返される「o」の場合は-3

   I
 >\/N
%# "CodeB
 8^o
 ) w
   l
 , i
   n
   g

ポインターパス:

ステップ1:
正しく作成された%で作成されたポインター

ステップ2:
ポインターを#で分割して上下に移動(P1、P2、P3)

ステップ3
P1右に送信>
P2右に移動
P3 8で3ステップ待機

ステップ4:
P1は\で反映されます。\に変更/
P2「
P3で2ティックを待つ8で 印刷モードに設定」

ステップ5:
P1見出し
P2印刷C
P3 8で1ティック待つ

手順6:
P1から送信^
P2印刷o
P3続行で待機を終了し、ASCII値の ""(32)を)から取得

ステップ7: P1ヘディングアップ
P2印刷d
P3ヘディングダウン

手順8: P1は\によって右に反映され、/
P2 に変更されましたP2印刷e
P3 ASCII値= 32の文字を印刷、操作

手順9:
P1は/によって反映され、\
P2に変更されます印刷B
P3フィールドの終わりに到達して停止します

ステップ10:
P1はIによって反射された
P2フィールドの終わりに到達して停止する

手順11:
P1 /に変更された/によって右に反映されます。/に戻る

ステップ12:
P1がNによって左に反射

ステップ13:
/によって反映されるP1

ステップ14:
P1「

ステップ15:
P1印刷o

ステップ16:
P1印刷w

ステップ17:
P1印刷l

ステップ18:
P1印刷i

ステップ19:
P1印刷n

ステップ20:
P1印刷g

ステップ21:
P1はフィールドの終わりに到達して停止します。

オンラインで試す


5

C、73

@Laikoniに感謝します!

F(){printf("Code B\157wli%cg",48+strlen("!#$&'*-../2369:<=>?@ADEGHIJKLMNOPQRSTUVWXYZ[]^_`abhjkmquvxyz|~"));}

オンラインでお試しください!

C、 31   33  35

F(){printf("Code B\157wli%cg",96|0xD+3*4/8);}

@ceilingcatと@DLoscにさらに2ポイントを感謝し、@ØrjanJohansenにさらに2ポイントをありがとう!

オンラインでお試しください!


1
@ceilingcatその後、削除し8-て有効なコードを保持することができます。0xA-4+8ただし、動作するはずです。
DLosc

1
だろう0xA+32/8動作しますか?(つまり、取り外し可能なものはあり
ません

@ØrjanJohansen私はそう思う。いずれも+32+3+2+3/8+2/8/8または+8右の出力を生成します。ありがとう!
Steadybox

ああ、または0xD+4*8/32。待つ必要はありません、短く0xD+4/3なります。
Ørjanヨハンセン

1
Haskellの答えと同じアプローチを使用すると、何らかの方法で削減できない場合は74のスコアが得られます:オンラインで試してみてください!
ライコニ

3

バッチ、19文字

@echO(Cod%TMP:~5,1% Bowling

Windows Vista以降では、-4で2倍のペナルティが必要ですが、でTMP始まるC:\Users\ため%TMP:~5,1%、冗長な記述方法です。e%


3

ブレインファック:-204

++++[++++>---<]>.+[--->+<]>+++.-----------.+.--[--->+<]>-.+[->++<]>.-[--->+<]>++++.++++++++.-----------.---.+++++.-------.

まあ、ひどいスコアですが、書くのは楽しかったです。

  • 122文字
  • 繰り返されるalnum:-0()
  • 句読点の繰り返し:-134(-[---] .-----------..-- [---]-。[-] .- [---] ..-- ---------.---..-----------)
  • 他の繰り返し:-192(+++++++> +> + <> ++++> + <> +> ++ <>> + <> +++++++++++++ ++++)
  • 空白文字:-0()
  • エキゾチックなキャラクター:-0()

Brainfuck PPCGチャレンジに勝ちますか?; P
Draco18s

@ Draco18sはおそらく笑わない。
ハイドンディアス

1
「書くのが楽しい」というのは、テキストジェネレータに「Code Bowling」と入力するということですか
ジョーキング

3

ジャワ8、2 3 5 13 17 18 19 20 21 24 77 78点

+53スコア(24→77)のおかげ@Laikoni

v->(char)"!#$%&'*,/0234689:;<=?@ADEFGHIJKLMNOPQRSTUVWXYZ[]^_`bfjkmpqsuxyz{|}~".length()+"\157de Bowling"

長さ104文字
-繰り返しalnum:-15(helng
-繰り返し句読点:-10("()""
-繰り返し他のASCII:なし
-空白文字:-1
スコア:78

オンラインでお試しください。


古い24バイトの答え:

v->"C\157de Bowlin"+(char)103;

30文字
-繰り返しalnum:-3(1
-繰り返し句読点:-2("
-繰り返し他のASCII:なし
-空白文字:-1
スコア:24

オンラインでお試しください。


テキストで8進数のエスケープを使用すると、Unicodeエスケープで得られる2ではなく6でスコアが増加します(ただし、両方を持つことはさらに悪いことです)。また、最初または最後の文字を連結すると、スコアが1増加します。最後に、名前付き関数ではなく、ラムダを使用した方がよいと考えます。
ニール

@Neil Weird、私はすでにObject x(){return"C\157de Bowling";}17ポイントで数時間前に思いついた。まだラムダがあります。ただし、ラムダを使用してJava 8の回答を追加できます。
ケビンCruijssen

おっと、申し訳ありませんが、私は気づいていませんでした7。(ただし、連結を忘れないでください。)
ニール

1
Haskellの答えと同じアプローチを使用すると、このバージョンのスコアは77になりますオンラインで試してみてください!
ライコニ

@ライコニありがとう!おかげで+53点。また、Java 8の回答は通常、末尾のセミコロンなしで回答されるため、末尾のセミコロンを削除し、繰り返し,,,;別の+1に置き換えることができます。面白いことに、残っている利用可能なすべての印刷可能なASCIIを使用する文字列は、char-codeに対して正確に97文字ですC。:)
ケビンクルーイッセン

2

積み上げ、42

(67:43,1 ab)2 9*pf sum 8/0\|>+chr'de Bowling',EPS#`

オンラインでお試しください!

スタックに出力を残します。内訳は次のとおりです。

length: 51
repeated alnum:        -0 ()
repeated punct:        -4 (',)
repeated other:        -0 ()
whitespace characters: -5 (     )
exotic characters:     -0 ()
total score: 42

おそらくもっと高くすることができますが、それは42 sooです。

別の候補、40:

(67:43,sum)9 pf 2%MIN 0\|>+chr'de Bowling',EPS#`

このスクリプトをスコアリングに使用しました。


2

、-81

Brainfuckより良い!

aeeaeuwkaaeeuwygaeaeclaaxjlwalusbdgueuewguwpweewpuuuwuuuwpuweew

説明

aeeaeuw //Write 'C'
k       //Set P[0] to 'C'
aaeeuw  //Write 'O'
y       //Set W[0] to 'O'
gaeae   //Set Accumulator to 'D'
claa    //Create new Wheel cell at index 0, swap with Accumulator, add 2
xj      //Set alternate marker mode and drop marker
lwa     //Write value of W[0], add 1
lu      //Put it back, subtract 1 from Accumulator
sb      //Go to 'j' if Accumulator != 0
d       //Delete W[0]
        //The above loop writes 'D' and 'E'
gueuew  //Write ' '
guw     //Write 'B'
pw      //Write 'o'
eew     //Write 'w'
puuuw   //Write 'l'
uuuw    //Write 'i'
puw     //Write 'n'
eew     //Write 'g'

誰も邪悪なことは何もしませんが、それは一種の楽しみだからです。

スコア:

長さ= 63

a*8  = -24
e*12 = -36
g*2  = -6
l*2  = -6
p*2  = -6
u*12  = -36
w*10  = -30

オンラインでお試しください!

編集:TiOは、新しいホイールセルの作成と削除を誤って処理しているようです-この件に関するバグレポートを提出しました。そこでは適切に動作しませんが、私は自分の通訳でそれを実行しましたが、動作し、あなたは私を信頼することができますので、私はそれについて心配しません;)


2

されたPerl:29、33

$_=OWLING;printf%s,"C\157de".chr(30+8/4).B.lc

スコア:

- 46 characters long
- repeated alnum:       -6 (rc)
- repeated punctuation: -6 ("..)
- repeated other:       -0 ()
- whitespace characters:  -1 (
)
- exotic characters:  -0 ()

Total score: 33

2

05AB1E、94ポイント

”X1234bcde5fghijk68l9<mn>,o.p|q\/{})r(_-+s=tu*vwxyzAB&YDEFG^HI%$ZK#L@!MNO~PQR`ST':UVW[0];"”€a7ôJCç€?

オンラインでお試しください!


- 100 characters long
- repeated alnum:       -0 ()
- repeated punctuation: -0 ()
- repeated other:       -0 ()
- whitespace characters:  -0 ()
- exotic characters:  -6 (””€ôç€)

Total score: 94

基本的に変換します(コードボウリングのバイナリASCII):

['1000011', '1101111', '1100100', '1100101', '0100000', '1000010', '1101111', '1110111', '1101100', '1101001', '1101110', '1100111']

1と0の文字列に変換すると、各1がアルファベットの文字に置き換えられ、各0がスペース文字、記号、または数字に置き換えられます。

”X1234bcde5fghijk68l9<mn>,o.p|q\/{})r(_-+s=tu*vwxyzAB&YDEFG^HI%$ZK#L@!MNO~PQR`ST':UVW[0];"”

文字列です。1は文字で、0は記号、数字、またはその他のものです。次に、アルファベット順を確認しながら、アルファベット順の場合は1を押し、アルファベット順でない場合は0を押します。次に、7つのグループに分割し、ASCIIに変換して各文字を印刷します。


2

T-SQL、65 18 32!ポイント

PRINT char(78-9605*43%12) + 'ode Bowling'

DloscのQBasicの回答のトリックに触発されて、10桁すべてとほとんどの数学演算子(%剰余/モジュロ、欠落のみ/)を、主に試行錯誤によって含める方法を見つけました。数字/記号の組み合わせを削除して67を取得する方法はないと思いますが、試してみてください。

バージョン2(18ポイント、簡単):

DECLARE @ char(12)='Code Bowling'PRINT @

素晴らしいスコアではありませんが、これは私の最初のバージョンが簡略化したものです(ありがとう、MickyT)。私が試した他のすべて(hex64のエンコードとデコード、文字列から個々の要素の選択、ASCII値の変換など)にはすべて、繰り返される文字(特にECR記号(),@)が多すぎてネガティブになりました。

バージョン1(65ポイント、無効):

DECLARE @ char(123)=
'Code Bowling FGHJKMOQSUVWXYZbjkmpqsuvxyz045789 [!?.-":;]{`~#$%^&*_+|\><}'
PRINT left(@,LEN(@)/6)

左側から使用する文字数を決定するために文字列の長さを使用したため、文字列から任意の1文字を削除すると、整数除算の結果が11にドロップされ、出力のみになりCode Bowlinます。


確かではありませんがDECLARE @ char(12)='Code Bowling'PRINT @、ルールの下でこれを減らすことができると思います。
MickyT

@MickyTそれはできます、それは私の答えを無効にしますか?チャットの誰かが、長い任意の部分ではなく、単一のランダムな文字の削除に耐えるだけでよいと言ったが、それらは間違っていたのか?
BradC

とりあえずここに置いておきます。t-SQLの答えを見るのはいつでもいいです
MickyT

@MickyTそのままにしておきますが、スコアを消します。それ以外の場合にできることは、わずか18ポイントです:P
BradC

2

;#、スコア-1163、非競合

たとえ競争できたとしても、これはあまり競争ではないと思います。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#

オンラインでお試しください!注:TIOには;#インタープリターはなく、;#+のみがあります。


1

CJam、スコア47

"'#?GyQ2wE(s6&␟JI!gF$u*Aq;0p4BvOKkHLhM"3/{:i~-z+c}%

うまくいけばこれで問題ない...

1つのエキゾチックな文字(Unit Separator、ASCII 31で表される)、および1つの繰り返される文字(")を使用します。まだもっと長くできると思いますが、今のところはそのままにします。

オンラインでお試しください!

プログラムは、その長い文字列を取得して、長さ3の部分文字列に分割します。次に、各部分文字列がブロックにマッピングされ、文字がASCII値に変換され、スタックに値がダンプされ、2番目と2番目の絶対差が取られ、最初の結果と加算され、最後の結果がASCIIに戻されますキャラクター。


1

CJam、スコア93

"g!#$&'()n*+/0134i5689:;<l=>?@ADEwFGHIJKLoMNOPQRSBTUVWXYZ [\]^_`aebcfhjkmdqrstuvxpyz{|}  C"7~%2,.-

オンラインで試す

TidBのPythonの回答から着想
二重引用符の繰り返しを回避する方法があるかどうかはわかりません。

説明:

文字列には、8文字ごとに「Cpde Bowling」が逆順に含まれています。
7~%「Cpde Bowling」(7~= -8)を抽出し
2,.-、p文字をデクリメントします(2,= [0 1]


@Laikoniあなたが私が未使用のコード規則を破ったことを意味するなら、それは今修正されるべきです
-aditsu

@Laikoniええ、しかし彼のコードから1つの文字を削除した場合、それは適切に動作しません。したがって、すべてのコードが使用されるため、それは有効です。
魔法のタコUr

@carusocomputingルールでは、「個々の文字(または文字のさまざまなセット)が削除された場合」コードが機能しないことが明確に記載されているため、あなたの解釈は成り立たないと思います。とにかく、aditsuはすでに問題を修正しているので、今はすべて順調です。
ライコニ

1

PHP、33ポイント

これを見つけるのは非常に困難でした。

スコアは将来改善される可能性があります。

<?echo IHASZODECG9F^"
'%6z\r+2/.W!";

改行はLinuxスタイルの改行であると想定されています!WindowsスタイルとOld-Macスタイルは適切に動作しません。


1

ルビー、75

およそPythonの回答の移植版ですが、Rubyにはクールなステップ関数がないため、gsub代わりに使用します。また、Google翻訳にフレーズを投げて、エキゾチックなキャラクターを少し楽しんでみることにしました

オンラインでお試しください!

print"Cachjkmq\x6fvyzADEFdGHIJKLMeNOPQRST UVWXYZ0B234589[o!?-:;]`w~@\#$%^&l*_+=|><i コードゴルフn 代碼保齡球 gκωδικός".gsub /(.).{7}/,'\1'

1

USML、12または9ポイント(非競合)

"Code\tBowling'

オンラインでお試しください!

この答えは、HTMLのレンダリング方法を乱用することで少しごまかしています。これにより実際に作成される文字列は"Code\tBowling "です。「o」文字を繰り返すとポイントが失われます。

チートではない答えの場合:

"Code Bowling

USMLはまだ開発のかなり初期段階にあり、プログラムのサイズをさらに大きくすることはまだできません。


USMLはまだ開発のかなり初期段階にあり、プログラムのサイズをさらに大きくすることはまだできません。」10ポイントの場合はどうですか"Code&'Bowling(*注:&改行に置き換えてください。コメントに入力できません)
アルバートレンショー

任意の文字の前にバックスラッシュ ``を追加することもできますが、コンパイラーはそれを無視するか、文字をそれ自体にエスケープするため、同じ文字列を出力します。これにより、(競合)スコアが最大11になりました!
アルバートレンショー

次に、改行と小文字sを次の行に追加して(部分文字列を取得しないため、出力はまったく変更されません)、競合スコアを最大12まで取得できます。これは、実際のスコアを除く非競合スコアと同じです。有効な提出:D
アルバートレンショー

Infactは、ここにはコメントで複数行のコードを入力するのは難しいので、私はそれにhastebinを投稿します、USMLで16点の答えです:hastebin.com/icuguviyax.tex
アルバート・レンショウ

私はばかで、自分のチャレンジのルールを忘れましたlol、上記のコードのサブセットはまだチャレンジを完了し、私の答えを失格にします。おっと!
アルバートレンショー

1

キュービックス、85

Codeha1spqumtr;$"gnilwoB"Sv"ADEFH%IJK2f!OPUzQ0V3XY&*[-|L:]\T`~#x>MR56cGk'?W<()b4j}.{Z_^/978@

オンラインでお試しください!

意味のない文字で置き換えられ、に置き換えられます。

        C o d e
        . . . .
        . . u . 
        . . ; . 
" g n i l w o B " S v " . . . .
. . . . . . . ! . . U . . . . .
. . . . . . . L . . \ . . . . .
> . R . . . . . . . W < . . . .
        . . . {
        . . ^ /
        . . . @
        . . . .

私は、文字を削除することでパスが非常にひどく壊れるほどパスを脆弱にしたと思います。

実行を見る

- 92 characters long
- repeated alnum:       -3 (o)
- repeated punctuation: -4 ("")
- repeated other:       -0 ()
- whitespace characters:  -0 ()
- exotic characters:  -0 ()

Total score: 85

0

VB.net、68

cONSOLE.WRITE("Code BowlingADEFGHJKQUVXYZfhjkmpqyz`!@#$%^&*9876543~][{}\|';:<>?+=-_".subStrinG(0,12))

VBの大文字と小文字の区別と「システム」の必要性の欠如を利用した簡単なテスト。


1
VB.netを知りませんが、これを減らすことはできませんcONSOLE.WRITE("Code Bowling")か?
ライコニ

1
ええ、できます。投稿ごとに、すべてのコードを使用する必要があります。個々のキャラクター(またはさまざまなキャラクターのセット)が削除された場合、プログラムが意味することは、タスクを常に適切に完了することに失敗しなければなりません。当然、プログラムのサブセットは、プログラムの残りがなければタスクを単独で完了することはできません。「スコアは17でなければなりません。
charliefox2

@ charliefox2ありがとう。私はそれを読んでいませんでした-VBを再び使用するには興奮しすぎていたに違いありません!
chrixbittinx

1
ねえ、17はまだ-81の私のスコアを押しつぶします!
charliefox2

0

シェル:スコア17

#!/bin/bash
echo "CODE BoWLING" | tr D-X d-x
  • 44文字の長さ
  • 繰り返し年数:-12(bhoD)
  • 句読点の繰り返し:-4( "-)
  • 他の繰り返し:-4(/)
  • 空白文字:-7()
  • エキゾチックなキャラクター:-0()

合計スコア:17


0

Acc !! 、171文字

119
Write _-52
Write _-8
Count i while i-2 {
	Write _-19+i
}
32
Write _
_+34
Write _
_+45
Write _
_+8
Write _
_-11
Write _
Count i while i-2 {
	Write 105+i*5
}
_-5
Write _

オンラインでお試しください!

Acc !! 空白が必要であり、ループが高価であるため、この課題に適しています。私はここでAcc umulatorを使用しましたが、文字数を増やすためには不十分でした。このページの概要は次のとおりです。

Accumulator独立した式は評価され、アキュムレータに割り当てられます(アキュムレータとしてアクセス可能_)。したがって、たとえば、3はアキュムレーターを3に設定するステートメントです。_ + 1はアキュムレーターを増分します。および_ * Nは、文字を読み取り、アキュムレーターにその文字コードを乗算します。(Nは入力を取得します)

Write <charcode> 指定されたASCII / Unicode値を持つ単一の文字をstdoutに出力します。文字コードには任意の式を使用できます。

少なくともゴルフでは、Accのループは苦痛です。中括弧が必要で、すべての空白が必要です。そうでなければ、それはかなり自明です。


これはボウリングの挑戦であり、ゴルフの挑戦ではないため、スコアを最大化することになっています。さらに、それ以外の点数は珍しいです。上記のスコアリングツールを使用すると、コードはマイナスのスコアを取得します。
Ørjanヨハンセン

1
@ØrjanJohansen彼らはスコアを最大化しようとしているように見えます(「ここでAccのアキュムレータを使用しましたが、文字数を増やすために不十分でした」)が、スコアが正しくありません。
LyricLy

@ØrjanJohansenああ、そうです、私は完全に得点セクションを見逃したようです。私は更新されます
FantaC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.