紛失した番号を印刷する


15

Lost TVシリーズの大ファンとして、私はいつもエピソードに繰り返し登場する一連の数字に興味をそそられました。これらの番号は次のとおりです。

4,8,15,16,23,42A104101

任意のプログラミング言語を使用して、これらの数値を出力するコードを記述します。

得点:

  • 最短回答が勝つ

  • 出力には、他の数字や文字を含めることはできません。セパレータとして他の文字を使用することも、セパレータをまったく使用しないこともできます。

  • 同じ番号の数字を区切ることはできません。48_15162342は有効な回答ですが、481_5162342は無効です。

  • 順序を尊重する必要があります。

  • コードにシーケンスの数字が含まれていない場合は、スコアを30%減らします。このルールでは、数字を個別に入力できます。例えば:

    abcde1fg5h
    

    回答には数字15が含まれておらず、数字のみが含まれているため、有効な候補です。ただし、4または8はボーナスを無効にします。

  • コードに数字がまったく含まれていない場合は、スコアを50%減らします。¹²³などの他のキャラクターは、このボーナスに引き続き有効です。


2
関連する非公開の質問:codegolf.stackexchange.com/q/23808/67312
ジュゼッペ


1
その順序で印刷する必要がありますか?
タイタス

6
将来の参照のために、restricted-sourceここで使用できるタグがあります。ほとんどの答えは明らかな解決策を避けていますが、数字を使用することを完全に禁止する場合、課題は少し面白かったと思います。
アーナウルド

回答:


31

失われた29 27/2 = 13.5バイト

%?\>>>>>>>>>>
>>\"*"@"

オンラインでお試しください!または、確定的であることを確認します

使用する適切な言語のように思えた。

説明:

Lostは、ポインターがどこからでも始まり、どの方向へでも進む2D言語です。これは一般に、ポインターがセクションに早く入らないことを何度もチェックすることになります。

...>>>>>>>>>>  These arrows filter all pointers that appear on the top line
.............  Or going vertically


%............  This flips the flag so that the program can end
.............  This stops premature termination

.?\..........  Clear the stack by skipping if a value popped from the stack is positive
.............  When the stack is empty, the \ directs the pointer down

.............  The \ directs the pointer right
..\"*"..  The string literal pushes all the Lost values to the stack

..\..........  The @ terminates the program if the % flag is switched
>>\........@.  Otherwise it clears the stack and repeats

.............  The quote here is to prevent the pointer getting stuck
............"  This happens when the pointer starts between the other quotes

11

ゼリー、7/2 = 3.5バイト

“ƲÞIȥ’Ḥ

セパレータなしの数値、つまり整数4815162342ます。

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

使い方

“ƲÞIȥ’全単射のbase-250整数リテラルです。
ƲÞI、とȥ有するインデックス(1ベース)1542174、及び171彼らは整数コードするように、ゼリーのコード・ページで2503154+250221+25074+171=2407581171

最後に、(unhalve)が得整数倍22407581171=4815162342

出力をエンコードすると“¡9)Ƙ[’、数字が含まれるにつながるため、2倍にする必要があります。



6

05AB1E、スコア:10 9 7 バイト / 2 = 3.5

•‘o]Ê•·

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

または7バイトの代替

•’µ[%•R

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

両方とも整数を出力し4815162342ます。

説明:

•‘o]Ê•     # Compressed integer 2407581171
      ·    # Doubled

•’µ[%•     # Compressed integer 2432615184
      R    # Reversed

(セクション鉱山のこの05AB1Eのヒントを参照してください大きな整数を圧縮する方法は?理由を理解すること•‘o]Ê•である2407581171•’µ[%•されます2432615184


古い9バイトはリストの出力に答えます[4,8,15,16,23,42]

•ΓƒÇ²•т;в

@Emignaのおかげで、-1バイト(したがって-0.5スコア)。

他の05AB1E回答よりも長いがこれ[4,8,15,16,23,42]は整数ではなくリストを出力する4815162342

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

説明:

•ΓƒÇ²•       # Compressed integer 1301916192
      т;     # Integer 50 (100 halved)
        в    # Convert the first integer to Base-50 (arbitrary): [4,8,15,16,23,42]

この05AB1Eのヒント(「大きな整数を圧縮する方法」および「整数リストを圧縮する方法」のセクション)を参照して、•ΓƒÇ²•is 1301916192および•ΓƒÇ²•50вis を理解して[4,8,15,16,23,42]ください。


1
ポストスクリプト番号はボーナスとして大丈夫なので•ΓƒÇ²•т;в4.5をお持ちかもしれません。
エミグナ

@Emignaああ、いいね!ありがとう。
ケビンクルーッセン

6

JavaScript(ES7)、34/2 = 17バイト

_=>eval(atob`NjUwNTgxMDErNDEqKjY`)

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

これは"65058101+41**6"、base-64でエンコードされた数字を含まない式をデコードおよび評価します。

65058101+416=65058101+4750104241=4815162342


JavaScript(ES6)、13バイト

退屈な明らかなソリューション。

_=>4815162342

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


6

Python 3、25バイト、12.5ポイント

print(*map(ord,'ዏٗ*'))

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

𩦦(髒、⿰馬葬)、𧨦(謚、⿰言⿱⿵八一皿)は4バイトですが、U + 0657は2バイトしかかかりません...


Python 3、29バイト、14.5ポイント

print(ord('𩦦')*ord('湡'))

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

𩦦(⿰馬葬)はofの異体字で、「汚い」という意味です。湡は川の名前です。そして、私が知っているように、彼らはこの質問に関係していません。


区切り規則について尋ねたところ、4815 162342有効な個々の区切りを使用できます。したがって、print(*map(ord,'ዏ𧨦'))1.5ポイントprint(*map(ord,'밗'))を節約します:)(2ポイントを節約しますが、無効として指定されています)。
ジョナサンアラン


4

Java 8、スコア:12 11.9(17バイトの70%)

v->767*6277917L+3

-0.1 @RickHitchcockに感謝します

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

説明:

v->               // Method with empty unused parameter and long return-type
  767             //  767
     *6277917L    //  multiplied by 6277917 (as long)
              +3  //  And then 3 is added

スコアが12の古い回答:(24バイトの50%):

v->(long)''*'Ⓥ'*'䧶'

印刷できない文字が含まれています0x1B

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

説明:

v->                   // Method with empty unused parameter and long return-type
  (long)              //  Cast the character (and therefore the result) to a long
        ''            //  27
           *'Ⓥ'       //  Multiplied by 9419
                *'䧶'  //  Multiplied by 18934

Javaでは、文字をUnicode値を保持する整数に自動ボックス化できます。残念ながら、文字のサポートされる最大のUnicodeである65,535Iは乗算するだけで2つの文字を使用する(期待分割最大二つの数がので、できないように、4,815,162,342である56,80284,771ここで、84,771残念ながら最大値を超えている65,535
また、最大サイズのでintが32 2 -1(2,147,483,647)であり、結果4,815,162,342がそれより大きい場合、long最大64 2 -1(9,223,372,036,854,775,807)を保持できるに明示的にキャストする必要があります。


退屈な答えは、ボーナスなしで14バイトでした。

v->4815162341L

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


1
私はこれが好きです。Javaであることはかなり短い:)
エミグナ

@Emignaありがとう。キャストが必要であり、long非常に大きなユニコード文字をサポートしていないのは残念です。上記の2つの制限がなければ、ちょうどv->'𩦦'*'湡'(15バイト、スコア7.5)で十分でした。しかし、実際にはまだ非常に短いです。:) Javaには、多くの場合、コードゴルフ(duhh ..)に関して多くの多くの弱点がありますが、数字の使用が許可されていないため文字で計算することは、その数少ない強みの1つです。私のこのかなり似た答えでもかなり役に立ちました
ケビンクルーイッセン

1
11.9バイト: v->767*6277917L+3
リックヒッチコック

3
@RickHitchcock毎日0.1バイトの節約が見られるわけではありません。;)
Arnauld

@RickHitchcockありがとう!そして、上記のArnauldのコメントに同意します。:D
ケビンクルーイッセン

4

R、18x0.7 = 12.6スコア

cat(9*2*267509019)

かなり自明で、問題の数字を避けて算術を行います。


4

7、10バイト、27の文字

115160723426754314105574033

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

このプログラムのディスク上のパック表現は(xxd format):

00000000: 269c 3a71 6f63 308b 7c0d                 &.:qoc0.|.

説明

以前に、Automate Saving the Worldでこの数字のシーケンスを見てきました。これは、非常に古い言語の使用を要求することで、一定の間隔で数字を印刷するというものでした。しかし、はるかに新しい言語には、この課題を興味深いものにする独自の工夫がある場合があります。(はい、この段落、そして実際にこの答えを書き始めた理由は、事実上、関連するすべての課題をサイドバーに一緒に表示する方法です。通常、人々はコメントを使用してそれを行いますが、十分な担当者がいません)

最初に注意することは、7はすべて数字で構成されているため、ここでのボーナスはうまくいかない可能性があることです(ただし、プログラムをオクテットのシーケンスと見なす場合、元の数字のASCII表現に対応するものはありません) 、その意味でボーナスを請求できます)。次に注意すべきことは、7には特定のデータを生成した可能性が高いコマンドシーケンスを再作成するコマンドがあることです。失われた数字を解釈できるかもしれません48151623427のプログラム自体のセクションとしてをでしょうか?

答えは「まったくない」です。最も問題のある部分は、その2番目の数字です8。7つのプログラムは8進数で記述されています。8などの番号はありません。したがって、文字列の最初の部分を別の方法で印刷する必要があります。

したがって、プログラムのベースは7つの「Hello world」プログラムに基づいています。

5431410557403
543141055          string literal
         7         separate data from code
          4        rearrange stack: {program's source}, empty element, {literal}
           0       escape {the literal}, appending it to {the empty element}
            3      output {the escaped literal}, pop {the program's source}

エスケープされたリテラルは、次のように解釈されるドメイン固有の言語です。

5                  output format: US-TTY using pairs of digits in the string
 43                select character set: digits and common symbols
   14              "4"
     10            "8"
       55          forget the set output format

この後3、残りのスタック要素を出力する余分なが来ます(そして、不十分な残りのスタックのために終了します)。その要素はプログラムの開始時に指定され、不一致6(閉じ括弧のような働きをする)を避けるために、データとして直接書き込むのではなく、コードを使用して生成します。(7プログラムの開始時に2つの暗黙の文字があることに注意してください。これはここで関連しています):

{77}115160723426
 7                 empty stack element
  7 11516          append "1151"
         0         append "6"
          723246   append "2324"

これにより、次のリテラルが生成されます。

115162324
1                  set output format: literally as octal
 15162324          "15162324"

印刷されます。


かなり良い答えを投稿したにもかかわらず、評判がないのは奇妙に感じます。私は専用コミュニティの回答を投稿の後ろにあなたの推論を読んで、私は完全にそれであなたをサポートしていますが、それは迷惑な、時にはコメントのことができるようにしないように取得する必要があります:(
ジョー・キング

@JoKing:そうですね、実際にこの質問への回答を投稿するようになったので、予想以上に面白いことがわかりました。ですから、これは、あなたが評判を求めていないなら、あなたの貢献がそうでない場合よりもサイトにとってより有益になるという私の仮説のより多くの証拠だと思います。(実際、11の評判に永久にとどまっていることに対する大きな不満は、メタの編集を提案できないことです。つまり、そこに誤った情報があった場合、それを修正する方法がありません。)
ais523


3

MASM 8088アセンブリソース、(93バイト-50%)= 46.5バイト

ソースで数字またはシーケンスを使用しない場合:

MOV AH,'P'-'G'
LEA DX,L
INT '!'
RET
T EQU '-'-'+'
L DW 'ph'/T,'jb'/T,'lb'/T,'fd'/T,'dh'/T,'$'

出力:

A>LOST.COM
4815162342


2

Aheui(エソトープ)、45バイト(15文字)* 0.5 = 22.5ポイント

반밤밪박밭빠따받발따밣뱣히망어

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


説明:

こちらもご覧ください。アフイ語リファレンス(英語

Aheui program starts with default stack '아'(or none)

반: push 2, move cursor right by 1(→).
밤: push 4, →
밪: push 3, →
박: push 2, →
밭: push 4, →
빠: dup, →
따: pop 2, push mul result(16).
받: push 3, →
발: push 5, →
따: pop 2, push mul result(15).
밣: push 8, →
뱣: push 4, move cursor right by 2(→→).
히: end.
망: pop 1, print, → (if stack is empty, move cursor left by 1.)
어: move cursor left by 1(←).

スタック(またはキュー)が空の場合、ㅁ(印刷命令)はカーソルを逆方向​​に移動することに注意してください。




1

JavaScript、143バイト(スコア付け方法がわからない)

(g=`${2*2}`)=>g.repeat(6).replace(/(.)/g,(m,p,i,k='')=>
  (k=m*[g-3,g-2,g,g,+g+2,g*3-1][i]
  ,RegExp(`${g-2}|${g}`).test(i)?k-1:i==+g+1?k-(g/2):k))

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

Start with six 4's, multiply, add, subtract by, to, from 4 to derive output.


2
ボーナスを獲得しようとしていましたが、このサイズのコードでは補償しませんでした。なぜ単に「4815162342」ではないのですか?
エドゥアルドヘフェル

@EduardoHoefel「スコア」または「ボーナス」システムを収集せず、ボーナスを取得しようとせず、出力に必要な数字を使用しないようにしました。コードは、数字をハードコーディングせずに数字を出力します。数値4(加算、減算、乗算4、ストリング(または配列)内の数値のインデックス)を使用して、必要な数値を導出できます。
guest271314

あなたのスコアは143*0.7=100.1
ジョーキング

1

PHP、35/2 = 17.5

<?=zzzzzzzzzzzzzzz^NVBVKOVKLVHIVNH;

デジタルアプローチ:40 * .7 = 28

<?=2+2,_,5+3,_,17-2,_,17-1,_,17+6,_,7*6;

数字、文字列なし:68/2 = 34

<?=$p++,!$p++,$p+=$p,_,$p+=$p,_,~-$q=$p+$p,_,$q,_,--$p+$q,_,$p*~-$p;

オンラインで試してください


1
Or just 14 bytes for <?=4815162342;
Jo King

1
OP hasn´t replied to wether we can omit the delimiters or not; but yeah. Why not just 10 bytes: 4815162342. Or <?=~ + 10 unprintables -> 15/2=7.5
Titus

1

JavaScript (SpiderMonkey), 67 bytes / 2 = 33.5 60 bytes / 2 = 30 58 bytes / 2 = 29 48 bytes / 2 = 24

-7 bytes/3.5, -2 bytes/1 courtesy of @JoKing, -10 bytes/5 courtesy of @tsh

print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)

Try it online!


1
print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)
tsh

2
Or just print(4815162342) for 17 bytes
Jo King



1

Whitespace, score: 49 41 bytes / 2 = 20.5

[S S S T    S S S T T   T   T   T   S S S S S S S T T   S S S T S T T   T   T   T   S S T   T   S N
_Push_4815162342][T N
S T _Print_number]

Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.

Try it online (with raw spaces, tabs and new-lines only).

Pseudo-code:

Integer i = 4815162342
Print i as number to STDOUT

Explanation:

In whitespace, a number is pushed as follows:

  • S: Enable Stack Manipulation
  • S: Push number
  • S/T: Positive/negative respectively
  • Some T/S followed by a single N: Decimal as binary, where T is 1 and S is 0

After that it is simply printed with TNST:

  • TN: Enable I/O
  • S: Output the top of the stack
  • T: As number

Is just pushing the number itself longer than having the extra multiply and push integer instructions?
Jo King

@JoKing I usually use the vii5ard online Whitespace compiler, since it has highlighting and showing the commands at the left. But apparently it works similar as Java integers in that the maximum is 32-bits, and it wraps around to the negative above that.. So the number was too big to be pushed in one go. When I push the number in TIO it works fine though, I now realize.
Kevin Cruijssen

1

F#, 45 bytes = 22.5 points

Just a run-of-the-mill for loop that prints the digits:

for c in"DHOPWj"do printf"%d"(int c-int '@')

The above is a complete program that can be compiled into an executable.

In a REPL (read-eval-print loop), e.g. FSI (F# Interactive), the following shorter version will work, as the REPL will output a representation of the expression evaluated; it has 35 bytes = 17.5 points:

[for c in"DHOPWj"->int c-int '@'];;

1

Pyke, 3 points

77 91 f8 86 98 06

Try it here!

The first byte signals to read in base 128 until a byte without the high bit is set.

Finally, 32 is subtracted from the result (for historical reasons).

This allows for the generation of large numbers in very small amounts of space


1

MathGolf, 7 bytes * 0.5 = 3.5

ÿ≤┼ÇÅ$∞

Try it online!

Explanation

Note that this code doesn't yet work on TIO. I have made some changes to MathGolf recently, including adding the $ operator. Once it gets pulled to TIO you can run it there, I'll make an update to this answer then. It runs perfectly in the terminal

ÿ≤┼ÇÅ     Push "≤┼ÇÅ"
     $    pop(a), push ord(a) (pushes 2407581171)
      ∞   pop a, push 2*a

I utilize the fact that MathGolf has 1-byte literals for creating strings of up to length 4. If I wanted to convert the entire number from a base-256 string, I would have needed to use two ", and the string would have been 5 characters. This way, I save 2 bytes, but I lose one byte by having the doubling operator in the end.



1

Python 3, 44 38 19 18.5 bytes

-6 bytes thanks to @Jo King
-50% bytes thanks to @ouflak for pointing out the 50% bonus
-1 byte thanks to @Dennis

for i in'밗ɯ*':print(ord(i),end='')

Try it online!



1

Befunge-98 (FBBI), 15 bytes / 2 = 7.5 points

"*H/!k-"*.*+..@

Try it online!

Explanation:

First push the ASCII values of the characters '*+H/!k- (42, 72, 47, 33, 107, 45) in this order to the stack. Then compute 4815=45107 and 1623=3347+72, and output.


1

Runic Enchantments, 15/2 = 7.5

\>`*`
Rn$!;

Try it online!

Simply encodes the values in as few bytes as possible. 42, 16, 15, 8, and 4, coerces them to numerical values, and prints them in reverse order. 4 8 15 16 42 without any spaces, as 48151642 was an acceptable output format.

4 and 8 could not be combined (48) as that is a numerical 0 and was not allowed to be used. It is possible to combine the 15, 16, and 42 into 2 characters (instead of 3) ʂ at the expense of +1 byte, which wasn't worth it.

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