String Kapsul Waktu 2016: Naiki Tangga Integer

28

Menggunakan 74 karakter dari string kapsul waktu 2016

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

tuliskan potongan kode N semua dalam bahasa yang sama di mana:

  • Output potongan pertama 1.
  • Output potongan ke-2 2.
  • Output potongan ke-3 3.
  • ... dll ...
  • Potongan Nth menghasilkan N(jumlah, bukan huruf literal).

"Cuplikan kode" didefinisikan sebagai salah satu dari ini:

  • Program lengkap tanpa input yang diperlukan yang menampilkan nomor secara normal .
  • Sebuah fungsi tanpa argumen yang diperlukan yang menampilkan / mengembalikan nomor secara normal .
  • Sebuah repl ekspresi yang mengevaluasi ke nomor tersebut.

(Anda dapat mencampur dan mencocokkan ketiga varian ini dalam cuplikan N. Anda.)

Karakter yang diizinkan untuk Anda gunakan dalam kumpulan snippet N yang dikombinasikan adalah 74 karakter kapsul waktu, ditambah floor(N/2) byte "wildcard" tambahan yang dapat Anda gunakan di mana saja.

Misalnya, kapsul waktu berisi tiga @sehingga keseluruhan potongan N Anda hanya mungkin ada hingga tiga @, kecuali jika Anda memutuskan untuk menggunakan beberapa floor(N/2)byte wildcard Anda untuk tambahan @.

Dengan demikian, tanpa menghitung wildcard, rangkaian karakter gabungan dalam cuplikan N Anda harus merupakan subset dari 74 karakter kapsul waktu. Panjang gabungannya tidak boleh melebihi 74. Anda tidak boleh menggunakan kembali karakter kapsul waktu atau byte wildcard di antara potongan.

Catatan

  • Tidak ada batasan lain pada panjang cuplikan atau berapa banyak wildcard yang dapat digunakan per cuplikan.

  • Anda harus menulis semua cuplikan untuk 1 hingga N. Ini bukan 0 hingga N-1, bukan k ke N + k-1.

  • Cuplikan harus individual, bukan satu cuplikan yang menampilkan daftar 1, 2, 3, ..., N.

  • Output mungkin mengapung seperti 3.0di tempat 3dan Anda dapat menggunakan basis selain desimal jika itu adalah basis alami bahasa Anda . Anda harus menggunakan pangkalan yang sama untuk semua cuplikan.

  • Wildcard dihitung sebagai byte dalam penyandian bahasa Anda . Ini mungkin akan menjadi ASCII tetapi misalnya jika dihitung sebagai satu byte dalam pengkodean Anda, maka Anda dapat menggunakannya sebagai byte wildcard tunggal.

  • Anda dapat menggunakan byte wildcard untuk karakter multibyte. misalnya adalah biasanya tiga byte sehingga Anda bisa menggunakannya dalam potongan tetapi akan dikenakan biaya tiga dari Anda floor(N/2)byte wildcard.

  • Baris baru seperti \r\ndapat dianggap satu byte.

Contoh

Dalam Python, N = 4 dimungkinkan hanya menggunakan REPL. Ada floor(4/2) = 2wildcard.

  1. 1dari kapsul waktu adalah ekspresi yang dihindari 1.

  2. 2terdiri dari satu wildcard, yaitu 2. Evals to 2.

  3. 3juga terdiri dari satu wildcard. Evals to 3. Tidak ada lagi wildcard.

  4. 4untungnya ada dalam kapsul waktu dan itu berlaku untuk 4.

Cuplikan ini pendek dan sepele. Sebuah jawaban nyata kemungkinan akan jauh lebih kompleks.

(Lima dan lebih dalam Python tentu saja mungkin tetapi saya akan menyerahkannya kepada para profesional.)

Mencetak gol

Jawaban dengan N tertinggi menang; yaitu salah satu yang naik tangga integer yang tertinggi.

Dalam kasus seri, jawaban yang menggunakan byte wildcard paling sedikit menang.
Jika masih ada seri, jawaban yang menggunakan karakter kumulatif paling sedikit menang.
Jika masih ada seri, jawaban sebelumnya menang.

Hobi Calvin
sumber
1
Jika bahasa pemrograman tidak memiliki REPL, bisakah kita masih mengirimkan ekspresi dalam bahasa itu jika mengevaluasi dengan nilai yang sesuai? (Misalnya, adalah 4cuplikan yang valid yang mengembalikan 4, dalam versi Perl yang lebih lama yang tidak memiliki REPL?)
1
Oh, dan pertanyaan lain: dalam bahasa dengan penyandian yang tidak kompatibel dengan ASCII, apakah kita memperlakukan karakter kapsul waktu sebagai karakter (menerjemahkannya ke penyandian bahasa), atau sebagai byte (menulis program sedemikian rupa sehingga melihat program sebagai ASCII akan tampak sepenuhnya berisi karakter kapsul waktu)? Dalam beberapa bahasa dengan set karakter aneh, sebagian besar karakter kapsul waktu bahkan tidak dalam set karakter, yang membuat mereka sulit untuk digunakan apa adanya.
1
Bagaimana dengan memimpin nol? Apakah 07 sama dengan 7?
Emigna
1
Benar-benar menggangguku bahwa string itu tidak mengandung -atau n...
devRicher
1
Bisakah "potongan" dalam bahasa berbasis tumpukan meninggalkan nilainya di tumpukan?
FlipTack

Jawaban:

9

CJam , 23 snippet, 11 wildcard, 45 byte

Q!
Q!)
Z
4
4)
6
7
8
9
A
B
C
D
E
F
G
H
I
J
QT|T+e`
O!)1
L!`e`(:)
6mf

Cobalah online! | penghitung wildcard (abaikan baris baru)

Dennis
sumber
5

JavaScript, 10 angka, 5 wildcard

Karakter yang tersisa: !!#$$%&())))*...:=@@@HILOQQQTTZ\^```eefmpy{|||~~~~~~~~~

5/5 karakter bonus yang digunakan: 37680

Program:

  1. 1
  2. ! `` +! ``
  3. 3
  4. 4
  5. 4|!``
  6. 6
  7. 7
  8. 8
  9. 9
  10. 0xA

Saya berharap salah satu string yang bisa saya gunakan \xABadalah angka, tetapi sayangnya tidak ada kombinasi yang saya coba akan menghasilkan. Karakter ^(XOR) juga akan menarik untuk digunakan, tetapi saat ini saya tidak melihat peluang di mana ia dapat digunakan untuk membuat angka yang cukup besar.

Jika Anda melihat kombinasi yang layak lainnya, beri tahu saya di komentar.

Sunting: Ditambahkan # 10 terima kasih kepada Arnauld

pengguna2428118
sumber
1
Saya pikir Anda dapat menambahkan 10. 0xA(dengan 0menjadi wildcard baru yang diberikan untuk mencapai 10)
Arnauld
Anda dapat melakukannya (Q=!``)|Quntuk 1 untuk mendapatkan tempat tambahan 1. Tidak yakin apakah itu akan membantu
Produk ETH
4

Pyth, 12 snippet, 20 byte (6 wildcard)

f@

Temukan nomor pertama di mana root (n, n) benar, mulai dari 1. Output: 1

y!H

Gandakan tidak {}. Output: 2

3

Wildcard # 1. Output: 3

4

Output: 4.

5

Wildcard # 2. Output: 5

6

Wildcard # 3. Output: 6

7

Wildcard # 4. Output: 7

8

Wildcard # 5. Output: 8

9

Output: 9

T

Variabel yang diinisialisasi. Output: 10

+T!Z

Sepuluh ditambah bukan nol. Output: 11

12

Wildcard # 6 ( 2). Output: 12

busukxuan
sumber
4

Oktaf, 6 angka, 3 wildcard

1: ~~I          % not(not(sqrt(-1))) evaluates to true (or 1)
2: 2            % Wildcard
3: 3            % Wildcard
4: 4
5: (T=4)+~~T    % Create a variable T=4, then add not(not(T)) which evaluates to 1.
6: 6            % Wildcard

Saya masih punya 1, 9dan *pergi, tetapi saya tidak tahu apakah itu akan banyak membantu saya. Saya akan melihat apa yang bisa saya lakukan dengan itu :)

Tidak mudah mendapatkan banyak angka saat tidak menggunakan Esolang. Saya berharap saya bisa mendapatkan satu atau dua lagi, tetapi saya pikir itu akan sulit.

Stewie Griffin
sumber
2

Pushy , 10 angka (4 wildcard)

Semua ini adalah cuplikan yang meninggalkan hasilnya di tumpukan. Anda dapat menguji ini di juru bahasa online dengan menambahkan #ke setiap potongan (untuk mencetak nomor)

A(      \ 1:  Get alphabet and check that 'Z' >= 'Y'. Results in 1 (True)
x&+     \ 2:  Check stack equality (True - both are empty) then duplicate and sum.
3       \ 3:  Push 3 (1 wildcard)
4       \ 4:  Push 4
1 4+    \ 5:  1 + 4 in postfix, leaves 5 on the stack (1 wildcard)
`L`T%   \ 6:  Get character code of 'L' and modulo by T (ten) - leaves 6 on the stack
7       \ 7:  Push 7 (1 wildcard)
8       \ 8:  Push 8 (1 wildcard)
9       \ 9:  Push 9
T       \ 10: Push 10

Jawaban ini belum lengkap - walaupun sepertinya tidak mungkin saya akan mendapatkan lebih jauh.

FlipTack
sumber
1

05AB1E, 12 angka, 6 wildcard

 1:    1                                   -> 1
 2:    )O!x                                -> sum([])!*2
 3:    4L`\                                -> 2nd_last(range(1...4))
 4:    4                                   -> 4
 5:    5        # wildcard 1 = 5           -> 5
 6:    6        # wildcard 2 = 6           -> 6
 7:    Tf`~                                -> or(last2(prime_factors(10)))
 8:    8        # wildcard 3 = 8           -> 8
 9:    9                                   -> 9
10:    T                                   -> 10
11:    A`Q!T+   # wildcard 4 = T           -> (y==z)!+10
12:    TÌ       # wildcard 5,6 = T,Ì       -> 10+2
Emigna
sumber
1

Hexagony , 6 angka, 3 wildcard, 23 byte

1!@
))!@
)|\@$!
4!%
4)!:
6!@

Cobalah online!

Seluruh program keenam terbuat dari wildcard.

Satu-satunya yang sangat menarik adalah 3. Sementara saya bisa melakukan itu sebagai 4(!@, itu akan meninggalkan saya tanpa 4menghasilkan 5dengan mudah, jadi saya pergi dengan ini sebagai gantinya:

 ) |
\ @ $
 ! .

Karena itu |, )pada baris pertama dijalankan dua kali, sebelum IP membungkus ke sudut kanan. $melompati @, dan kemudian \mengalihkan IP melalui yang )ketiga kalinya. IP membungkus ke sudut kiri bawah, !mencetak 3dan@ mengakhiri program.

Saya tidak berpikir lebih dari 6 snippet dimungkinkan, karena hanya ada 5 perintah pencetakan ( !!!!!) dan 5 perintah yang dapat digunakan untuk mengakhiri program ( @@@%:). Jadi, setelah cuplikan kelima, kami membutuhkan setidaknya dua wildcard per cuplikan. Oleh karena itu, bahkan jika saya berhasil mendapatkannya 6tanpa menggunakan wildcard untuk itu, tidak akan ada cukup wildcard yang tersisa untuk pergi ke potongan tujuh.

Martin Ender
sumber
1

JavaScript, 8 angka, 4 wildcard

 1: 1
 2: -~!``
 3: 4+~!$
 4: ~!``*~!``
 5: 4|!$
 6: 0xf^9
 7: 7
 8: 8

Saya mungkin mencoba lagi nanti - saya agak membuang-buang karakter pada 2 dan 6, ketika Anda sampai ke sana.

Marcus Dirr
sumber
0

Befunge-98, 4 snippet, 18 byte, 2 wildcard

!.@
!:+.@
41-.@    wildcard 1 = -
4.#A9H   wildcard 2 = .

Karakter tersisa: !!!$$%&())))*=ILOQQQTTZ\^`````````eefmpxy{||||~~~~~~~~~

Saya ragu lebih banyak yang mungkin, karena setiap program tambahan akan membutuhkan bentuk output, dan semua .,sudah habis. Jika saya dapat menemukan cara untuk membuat 3 dan 5 tanpa wildcard, maka itu mungkin.

Program terakhir pada akhirnya akan berakhir karena pengisian tumpukan. Adan Htanpa sidik jari yang dimuat akan mencerminkan, dan program akan terus mendorong angka 9.

PurkkaKoodari
sumber
Saya pikir yang terakhir tidak valid. Kecuali jika tantangan mengatakan sebaliknya, program harus diakhiri.
Martin Ender
Anda hanya dapat mengakhiri dengan %.
Martin Ender
@MartinEnder 00%valid di Befunge-98 dan menghasilkan 0 (atau meminta pengguna untuk hasilnya di Befunge-93.
PurkkaKoodari
@ MartinEnder Juga, program terakhir pada akhirnya akan berakhir dengan asumsi memori yang terbatas. Spesifikasi Funge-98 menyebutkan bahwa {dapat membalikkan jika kehabisan memori; tidak ada yang dikatakan tentang dorongan normal, dan semua penerjemah tampaknya gagal pada OOM, tetapi jelas batas memori dipikirkan dalam spesifikasi bahasa.
PurkkaKoodari
Saya pikir ini berpotensi ditingkatkan (mungkin ???) karena kehadiran pkarakter, tetapi akan membutuhkan beberapa pekerjaan. Anda bisa melakukannya e%9untuk mendapatkan 5, tetapi Anda akan membutuhkan cara untuk mencetak dan mengakhiri program, jadi saya ragu
MildlyMilquetoast
0

SmileBASIC, 12 snippet, 5 wildcard, 31 byte

!.     '. is parsed as the number 0.0; taking the logical not gives 1
!.+!.  'Previous value added to itself
@Q||Q  '@Q is a label string and Q is a variable. For some reason, certain comparison/logical operations between strings and numbers return 3 rather than 1 or 0. 
4      '4
#TLIme 'Constant for the text color lime green, value is 5.
6      '6 (wildcard)
7      '7 (wildcard)
8      '8 (wildcard)
9      '9
&HA    'Hexadecimal A
11     '11 (one of them is a wildcard)
4*3    '4 multiplied by 3 (3 is wildcard)

Saya juga bisa menggunakan variabel alih-alih .(variabel mulai dari 0), dan variabel string (seperti Q$) alih-alih@Q

Karakter yang digunakan: !!!#&*+...1449@AHILQQTem||

Wildcard digunakan: 67813

karakter yang tidak digunakan: !!$$%()))):=@@OQTZ\\^`````````efpxy{||~~~~~~~~~

12Me21
sumber