Seberapa tinggi Anda bisa menghitung?


154

Tantangan:

Tugas Anda adalah menulis sebanyak mungkin program / fungsi / snippet, di mana masing-masing menghasilkan / mencetak / mengembalikan bilangan bulat. Program pertama harus menampilkan integer 1, yang kedua 2dan seterusnya.

Anda tidak dapat menggunakan kembali karakter apa pun di antara program-program tersebut. Jadi, jika program pertama adalah:, x==xmaka Anda tidak boleh menggunakan karakter xdan =lagi di salah satu program lain. Catatan: Diijinkan untuk menggunakan karakter yang sama beberapa kali dalam satu program.

Mencetak:

Pemenang akan menjadi pengajuan yang dianggap paling tinggi. Jika ada seri, pemenangnya adalah pengiriman yang menggunakan jumlah byte paling sedikit.

Aturan:

  • Anda hanya dapat menggunakan satu bahasa untuk semua bilangan bulat
  • Cuplikan diizinkan!
  • Agar tetap adil, semua karakter harus disandikan menggunakan satu byte dalam bahasa yang Anda pilih.
  • Output harus dalam desimal. Anda tidak boleh menampilkannya dengan notasi ilmiah atau format alternatif lain. Output mengapung OK, asalkan semua angka yang ditampilkan di belakang titik desimal adalah 0. Jadi, 4.000diterima. Ketidakakuratan karena FPA diterima, asalkan tidak ditampilkan dalam output.
  • ans =, ruang terkemuka dan trailing serta baris baru dll. diizinkan.
  • Anda dapat mengabaikan STDERR, selama output yang benar dikembalikan ke STDOUT
  • Anda dapat memilih untuk mengeluarkan integer ke STDERR, tetapi hanya jika STDOUT kosong.
  • Simbol bahasa independen (seperti Bahasa ) tidak diizinkan
  • Huruf peka huruf besar-kecil a != A.
  • Program harus independen
  • Spasi tidak dapat digunakan kembali
  • Anda harus menggunakan digit ASCII dalam output

Penjelasan didorong!


4
Bahasa Headsecks hanya peduli tentang tiga bit yang lebih rendah dari setiap karakter dan sepele akan mencapai skor 64. Ini sebagian simbol-independen, tetapi tidak sepenuhnya. Saya pikir aturan terakhir harus mencakup sebagian bahasa simbol-independen juga, tapi saya tidak yakin bagaimana cara mengucapkannya.
Dennis

1
Mengenai aturan snippet, apakah kita masih perlu menyertakan usings / import? Dan apakah impor statis diizinkan (tanpa menjadikannya bagian dari snipet)?
Kevin Cruijssen

1
@KevinCruijssen Anda dapat menghilangkan hal-hal yang diperlukan untuk setiap program / fungsi. Misalnya, Anda tidak perlu #include <iostream>dan hal-hal boilerplate lainnya di C ++. Anda memang butuh from numpy import *. Catatan: Saya bukan seorang programmer, jadi saya tidak tahu semua nuansa. Kita dapat berdiskusi dalam obrolan jika ada sesuatu yang tidak jelas :)
Stewie Griffin

1
Anda memiliki hak untuk memilih namun Anda suka @tuskiomi, tetapi menurut saya itu adalah aturan yang baik. Karakter spasi putih hanya byte, sama seperti karakter lainnya. Mengapa mereka harus diperlakukan secara berbeda? Juga, bahasa Whitespace akan menang dengan telak, karena hanya berisi ruang, tab dan pergeseran baris. Terima kasih telah mengatakan mengapa Anda tidak memilih :-)
Stewie Griffin

1
@StewieGriffin Saya setidaknya akan memberikan ruang, tapi hei, saya bukan kamu.
tuskiomi

Jawaban:


146

JavaScript (ES7), skor 17, 176 byte

Mereka mengatakan itu tidak bisa dilakukan, jadi saya melakukannya: D (terima kasih banyak bantuan dari @FullDecent)

""**""
~(~/~//~/~/)/~/~/
3
4
!NaN- -!NaN- -!NaN- -!NaN- -!NaN
6
7
8
9
++[[]][+[]]+[+[]]
11
'lengthlength'.length
222>>2>>2
`${``^``}xE`^``
0XF
C=CSS==CSS;C<<C<<C<<C<<C
555555555555555555555%55

Karakter yang tidak digunakan:

#&,:?@ABDGHIJKLMOPQRTUVWYZ\_bcdfijkmopqrsuvwyz|

Saya tidak berpikir 18 mungkin, tapi saya mengatakan hal yang sama tentang 17 ...

Penjelasan

JavaScript adalah bahasa yang diketik dengan sangat lemah; jika Anda mencoba melakukan operasi matematika pada nilai non-angka, JS akan berusaha paling keras untuk mengubahnya menjadi angka terlebih dahulu. Ini memungkinkan banyak solusi menarik. Saya sudah mencoba untuk menghindari menggunakan digit sebanyak mungkin sehingga dapat digunakan nanti.

  1. **adalah operator eksponensial dalam ES7. String kosong saat dipaksa ke angka menjadi 0, jadi ini menghitung 0 ** 0, yang 1sesuai dengan JavaScript.
  2. Agak konyol, tapi berhasil. /~/adalah regex literal, dan ~/~/mengembalikan -1, jadi ini adalah ~(-1 / -1) / -1= ~(1) / -1= -2 / -1= 2. (kredit ke @ GOTO0 untuk idenya)
  3. Cukup 3.
  4. Sekarang sederhananya 4.
  5. NaNadalah falsy, demikian !NaNjuga true, yang setara dengan 1. Ekspresi demikian menjadi 1 - -1 - -1 - -1 - -1= 1 + 1 + 1 + 1 + 1= 5.
  6. Cukup 6.
  7. Cukup 7.
  8. Cukup 8.
  9. Cukup 9.
  10. Ini menggunakan sedikit sihir JSF .+[]adalah 0, jadi [[]][+[]]kembalikan elemen pertama [[]](yaitu, []), dan ++tambahkan ini ke 1. Kemudian +[+[]]menambahkan array [0], yang dipaksa ke string dan membuat "10".
  11. Cukup 11. Saya awalnya telah menggunakan 11&1111untuk 3 dan 33/311 sampai saya menyadari lagi betapa bodohnya saya ...
  12. Strategi ini akan bekerja pada angka berapa pun: buat string panjang 12dan gunakan .length.
  13. Saya hanya bermain-main dengan 2dan >untuk sementara waktu untuk mendapatkan yang ini. Saya beruntung lagi: 222 >> 2adalah 55, dan 55 >> 2sekarang 13.
  14. Yang ini agak rumit. Ide dasarnya adalah membuat 14dalam hex ( 0xE), tetapi kita membutuhkan digit0 tempat lain. Jadi alih-alih, kami menambahkan hasil ``^``ke string xE; string kosong yang dipaksakan ke angka adalah 0, jadi ini mengembalikan 0 ^ 0= 0. Kemudian hasilnya XOR dengan string kosong, yang mengubah kedua nilai menjadi angka; "0xE" ^ ""adalah 14.
  15. Ini sekarang cukup mudah: 0XFadalah heksadesimal literal dengan nilai 15.
  16. Yang paling sulit? Pertama kita atur variabelnyaC ke CSS == CSS(yaitu, true). Kemudian kami mengambil hasilnya dan melakukan << Cempat kali, yang pada dasarnya dikalikan 1dengan 2 ** 4.
  17. JavaScript mulai kehilangan presisi integer pada 2 53 , yang memungkinkan 555...555%55untuk mengembalikan nomor yang bukan 0atau 5. Saya kebetulan sangat beruntung saat bermain-main di sini.

Strategi yang dapat digunakan pada banyak angka:

  • -!NaNakan bekerja pada nomor berapa pun (saat ini 5), meskipun mendapat besar sangat cepat
  • ~/~/akan bekerja pada nomor berapa pun (saat ini 2), meskipun mendapat sangat besar sangat cepat.
  • +[] akan bekerja pada nomor berapa pun (saat ini 10 ), meskipun itu paling mudah di 10atau 11.
  • .length akan bekerja pada nomor berapa pun.
  • `${-``}xE`-`` akan bekerja pada hampir semua nomor jika Anda melakukannya dengan benar.
  • C<<Cakan bekerja pada kekuatan dua (saat ini 16), atau int sama sekali jika Anda termasuk |.

3
Itu cukup luar biasa :)
Steve Bennett

1
Mungkin ada beberapa cara licik untuk menggunakan salah satu window.properti, seperti defaultPixelWidth, tetapi semuanya tampaknya mengandung salah satu latau e. Anda bisa mendapatkan 0 yang lain dengan URL | URLtetapi tidak banyak membantu.
Steve Bennett

1
Saya juga menemukan "fokus", tetapi saya masih belum melihat cara mendapatkan 18: "fokus" adalah fungsi (). "fokus & fokus" adalah 0. "fokus (URL)" tidak ditentukan.
Xantix

1
Operator yang ditemukan saat ini meningkat:+ - * ~ < x X length
14m2

1
Kurangnya angka terutama terbatas pada simbol-simbol ini. Angka apa pun mengandung salah satu dari 1 2 3 4 5 6 7 8 9 + - * ~ < x X length. Jadi sebelum menyelesaikannya kita tidak bisa pergi 18
m

90

Jelly , 47 bilangan bulat, 519 byte

e
BI$⁼#
⁾⁾⁾Ụ^/
ı***ıḞḞ
5
6
7
.::::
9
EȮ<
⁻GṘ
=`p`VV×`DQV
~A~A~A~A~A~A~A~A~A~A~A~A~A
⁷ṾṾṾw
⁴ḟ€⁴Ṁ
mmmmċ
ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ
+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ
CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC
ĖḌĖḌ
ṫṣȦJṫȦ⁸ȦJ
22
“@ṃ»
!ḤḤ!
³HH
ØaM
;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬
irið8c
⁶ḲĠṂ°İṂĊ
œṡ¹ẆẆTUṖṖṖṖP
ȷ½RṪ
LµdddddµFL
33
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ
ẇɓæ«æ«æ«æ«æ«|æ«|
⁹ṚḢ²
‘‘‘0‘‘‘‘‘‘‘
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ạ
-____---__________
”(O
⁵ḶxḶ⁵ị⁵ḶxḶḣṢ
⁽{ʂ%⁽{}
ẊẠżv©żvżvżvọ®®Ạżvżvżvọ®
44
111111l11&K1111111Kl11&
,SS¶ỊỊ,ÇS¶ÇÑÇÇÇÑ
ÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆn

Setiap baris adalah program yang terpisah dan lengkap.

Cobalah online!(termasuk test suite dan pemeriksa persimpangan)

Bagaimana itu bekerja

Setiap program lengkap tanpa argumen baris perintah mengeksekusi tautan utamanya (didefinisikan pada baris terakhir) secara niladis, yaitu tanpa input. Jika tautan pertama dalam rantai adalah nilad, ia dikonsumsi, dipanggil, dan kedua argumen tautan utama dan nilai pengembalian diatur ke hasilnya; jika tautan pertama dalam rantai adalah monad atau angka dua, itu tidak dikonsumsi dan argumen implisit dan nilai balik 0 digunakan sebagai gantinya. Dalam kedua kasus, sisa rantai dieksekusi secara monadik.

Jelly merusak outputnya dalam beberapa kasus. Khususnya, array tunggal dicetak tanpa tanda kurung di sekitarnya, sehingga 42 dan [42] dan tidak bisa dibedakan setelah dicetak. Kami akan menggunakan ini pada beberapa kesempatan.

1 - 10

e

The ada tes atom jika nilai kembali 0 milik argumen 0 . Ya, jadi emengembalikan 1 .

BI$⁼#

BI$adalah quicklink, khususnya rantai monadik yang dibentuk oleh $pengelompokan cepat atom binerB dan atom kenaikanI . Digabungkan, mereka mengonversi bilangan bulat ke dalam susunan digitnya di basis 2, kemudian menghitung perbedaan maju dari digit yang dihasilkan. Jika array hanya memiliki satu elemen, tidak ada perbedaan forward dan Imengembalikan array kosong (falsy); jika setidaknya ada dua digit, Ikembalikan array yang tidak kosong (benar).

Quick #mengkonsumsi quicklink sebelumnya dan menerapkannya pada 0 , 1, 2, ... sampai cukup banyak kecocokan yang ditemukan dan mengembalikan susunan kecocokan. Jumlah yang diperlukan dihitung oleh , yang membandingkan nilai balik / argumen 0 dengan dirinya sendiri, menghasilkan 1 . Dengan demikian, seluruh program mengembalikan [2] , bilangan bulat non-negatif pertama dengan dua digit di basis 2.

⁾⁾⁾Ụ^/

⁾⁾⁾adalah string literal, khususnya string ⁾⁾ . The up grade atom macam indeks sebesar nilai yang sesuai mereka; karena kedua karakter sama, ini menghasilkan [1, 2] . Array yang dihasilkan dikurangi dengan bitor XOR ^/, sehingga seluruh program mengembalikan 3 .

ı***ıḞḞ

ımenginisialisasi argumen dan mengembalikan nilai ke unit imajiner i . *adalah angka dua eksponensial , yang argumen kanannya default ke argumen tautan utama. Jadi, ***ımenghitung ((i i ) i ) i ≈ 4,81 + 0i , atom ( lantai untuk argumen nyata , bagian nyata untuk yang kompleks) menghitung bagian nyata ( 4,81 ), kemudian lantai, menghasilkan 4 .

5
6
7

Ketiga program ini terdiri dari satu huruf tunggal dan melakukan apa yang Anda harapkan.

.::::

Literal .adalah singkatan untuk 0,5 dan menginisialisasi argumen dan mengembalikan nilai. The pembagian integer (angka dua ini :) default argumen yang tepat untuk argumen link utama, sehingga ::::menghitung 0,5 / 0,5 / 0,5 / 0,5 / 0,5 , menghasilkan 8 .

9

Literal lain.

EȮ<

The semua sama atom Emengembalikan 1 jika semua elemen dalam argumen yang sama, dan 0 jika tidak. Argumen integer z dipromosikan ke [z] , sehingga Eakan mengembalikan 1 untuk argumen implisit 0 .

Sekarang, atom outputȮ mencetak 1 hingga STDOUT. Kami kemudian membandingkan 1 dengan argumen 0 implisit menggunakan kurang dari atom <. Hasilnya adalah (1 <0) = 0 , dan dicetak secara implisit ketika program selesai.

11 - 20

⁻GṘ

The Grid atom Gmencoba untuk membuat tabel visual menyenangkan dari argumen. Untuk argumen integer biasa (di sini: 0 ), itu hanya membungkusnya dalam sebuah array. The datar tidak-sama atom membandingkan argumen implisit 0 dengan hasil di sebelah kanan ( [0] ), menghasilkan 1 karena argumen tidak sama. The representasi atom cetak 1 untuk stdout dan mengembalikan hasilnya. Pada akhir program, nilai pengembalian akhir dicetak secara implisit, jadi kami menghasilkan output 11 .

=`p`VV×`DQV

The diri cepat `berubah menjadi angka dua menjadi monad dengan menyebutnya dengan argumen kiri dan kanan identik. Pertama, =`bandingkan argumen 0 implisit dengan dirinya sendiri, menghasilkan 1 .

The produk Cartesian atom pmengharapkan daftar sebagai argumen, sehingga mempromosikan bilangan bulat 1 ke kisaran [1, ..., 1] = [1] . p`mengambil produk Cartesian dari [1] dan itu sendiri, menghasilkan [[1, 1]] .

The eval atom Vternyata semua array datar (yang hanya berisi angka dan karakter) ke string, kemudian mengevaluasi string yang dihasilkan sebagai program Jelly niladic. [[1, 1]] pertama-tama berubah menjadi [“11”] , kemudian Vmengevaluasinya, menghasilkan [11] . Sekali lagi, Vubah array ini menjadi "11" , lalu evals untuk menghasilkan 11 .

Sekarang, ×`gandakan 11 dengan dirinya sendiri, menghasilkan 121 . The desimal atom berubah 121 menjadi [1, 2, 1] , yang unik atom Qmembuang kedua 1 , dan Vsekali lagi ternyata daftar digit ke integer yang dihasilkan dari concatenating mereka, kembali 12 .

~A~A~A~A~A~A~A~A~A~A~A~A~A

~adalah atom bitwise BUKAN . Dengan aritmatika komplemen dua, memetakan argumen z ke ~ z = - (z + 1) . Aadalah atom nilai absolut , sehingga memetakan - (z + 1) = z + 1 . Dengan nilai pengembalian awal 0 , tiga belas salinan ~Apengembalian 13 .

⁷ṾṾṾw

Konstanta memegang karakter baris baru '\ n' dan menginisialisasi argumen dan mengembalikan nilai.

The uneval atom upaya untuk menciptakan representasi string dari argumen z sehingga program Jelly terdiri dari kode ini akan kembali z .

Panggilan pertama dengan patuh mengembalikan string "" \ n " , yang merupakan karakter literal. Panggilan selanjutnya mengembalikan "" "," \ n " - sepasang literal karakter. Panggilan ketiga dan terakhir mengembalikan "" "," "," ,, "", "\ n" - rangkap lima literal karakter.

Akhirnya, atom indeks jendelaw mempromosikan argumen yang tepat '\ n' ke string "\ n" dan menemukan indeks pertama dari substring dimulai dengan "\ n" . Ini mengembalikan 14 .

⁴ḟ€⁴Ṁ

adalah konstanta 16 . The Quicklink filterfalse masing-masing ( ḟ€) mempromosikan argumen kiri 16 untuk rentang [1, ..., 16] , kemudian iterates atas unsur-unsurnya.

Untuk setiap elemen z , ḟ⁴dijalankan, pertama-tama mempromosikan z ke [z] , lalu menghapus semua ( 16 ) kejadian 16 (jika ada) . Ini menghasilkan array [[1], [2],…, [14], [15], []] , di mana array terakhir kosong karena berisi 16 .

Akhirnya, atom maksimum memilih [15] .

mmmmċ

The modular atom m- yang disebut dengan argumen x (array) dan y (integer) biasanya membutuhkan waktu setiap | y | th unsur x , dimulai dengan yang pertama jika y> 0 , dengan jika terakhir y <0 . Namun, ketika y = 0 , ia mengembalikan x yang disatukan dengan kebalikannya.

Argumen integer kiri 0 pertama kali dipromosikan ke [0] . Salinan pertama dari mgabungan [0] dengan dirinya sendiri, menghasilkan [0, 0] . Salinan yang tersisa mengubah hasil ini menjadi [0, 0, 0, 0] , lalu [0, 0, 0, 0, 0, 0, 0, 0] , dan akhirnya [0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .

Akhirnya, atom hitunganċ menghitung berapa kali argumen implisit 0 muncul dalam array yang dihasilkan, menghasilkan 16 .

ṭṭṭṭṭṭṭṭḍḄḄḄḄḄḄḄḄḄ

adalah atom paku dan menambahkan argumen kirinya ke yang benar. Karena dan berikut ini adalah angka dua , semua panggilan untuk memberikan argumen 0 implisit sebagai argumen yang tepat . Panggilan pertama mengembalikan [0, 0] , yang kedua [0, [0, 0] , dan yang kedelapan dan yang terakhir [0, [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]]] .

adalah atom yang dapat dibagi ; untuk argumen x dan y , mengembalikan 1 adalah x habis dibagi oleh y , 0 jika tidak. adalah no-op untuk bilangan bulat, jadi ḍḄmenguji 0 untuk dapat dibagi oleh masing-masing bilangan bulat dalam array yang dibuat. 0 dapat dibagi dengan sendirinya, jadi kita mendapatkan [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]]]]] .

Sekarang, unbinary atom beroperasi pada array datar. Untuk pasangan [a, b] , itu hanya mengembalikan 2a + b . Seperti yang disebutkan sebelumnya, adalah no-op untuk bilangan bulat: argumen bilangan bulat c dipromosikan ke [c] , dan [c] dalam basis apa pun hanyalah c .

Panggilan pertama untuk mengurangi [1, 1] menjadi 3 , dengan demikian menghasilkan [1, [1, [1, [1, [1, [1, 3]]]]]]]]] . Panggilan berikutnya berkurang [1, 3] menjadi 5 , yang berikutnya [1, 5] menjadi 7 , dan seterusnya hingga yang kesembilan kembali 17 .

+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ+Ṇ

adalah atom datar TIDAK logis dan memetakan argumen implisit 0 ke 1 . +adalah atom tambahan, jadi masing-masing dari delapan belas salinan +Ṇkenaikan nilai pengembalian sebelumnya (awalnya 0 ). Seluruh program dengan demikian mengembalikan 18 .

CNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNCNC

Cadalah atom pelengkap dan memetakan argumennya z ke 1-z . Nadalah negate atom dan memetakan argumennya z ke -z . Bersama-sama, CNpetakan z ke - (1-z) = z-1 , jadi delapan belas salinan mengubah argumen implisit 0 menjadi -18 . Aplikasi Chasil akhir 1 - (-18) = 19.

ĖḌĖḌ

The Menghitung atom Ėmenyebutkan item dalam array, menciptakan pasangan indeks-nilai. Argumen implisit 0 dipromosikan ke [0] , lalu Ėmenghasilkan [[1, 0]] . The undecimal atom mengkonversi array datar dari basis 10 ke integer, menghasilkan [10] dalam kasus ini.

Panggilan kedua untuk Ėmengubah [10] menjadi [[1, 10]] , yang akhirnya berubah menjadi [20] .

21 - 30

ṫṣȦJṫȦ⁸ȦJ

The ekor atom (angka dua) memilih postfix argumen kiri yang dimulai pada indeks (1-based dan modular) yang ditentukan dalam argumen yang tepat, mempromosikan argumen integer kiri x untuk [x] . Saat dipanggil dengan kedua argumen yang diset ke 0 , mengembalikan [0] .

The setiap dan semua atom Ȧmengembalikan 1 jika argumen adalah truthy dan tidak mengandung nol pada setiap kedalaman, 0 sebaliknya. Di sini, kita cukup menggunakannya sebagai fungsi identitas untuk mengembalikan argumen 0 implisit . The perpecahan di atom partisi argumen kiri [0] pada kejadian argumen kanan 0 , sehingga mengembalikan [[], []] di sini.

The indeks atom Jmembuang unsur-unsur nilai kembali dan menggantikan mereka dengan indeks mereka, menghasilkan rentang [1, 2] dalam kasus khusus ini. Ȧdan keduanya bekerja seperti sebelumnya, sehingga mereka mengurangi [1, 2] ke postfix yang dimulai pada indeks terakhir, menghasilkan [2] .

Dalam tautan niladik, konstanta berlaku [] . Ini adalah nilad yang tidak dapat dipecahkan, yaitu, tidak cocok dengan rantai dengan cara apa pun. Hasilnya, nilai pengembalian sebelumnya ( [2] ) dicetak ke STDOUT, kemudian diganti dengan nilai nilad ( [] ).

Karena [] salah, Ȧubah menjadi 0 . The Jatom mempromosikan 0 ke [0] , kemudian mengembalikan daftar indeks nya ( [1] ), yang dicetak secara implisit ketika program selesai.

22

Literal lain. Repdig tampaknya merupakan tempat terbaik untuk menggunakannya.

“@ṃ»

Ini menggunakan kompresi string bawaan Jelly. Indeks @ dan di halaman kode Jelly adalah 64 dan 220 dan string literal dapat berisi 250 karakter yang berbeda, jadi ini pertama menghitung bilangan bulat 250 × 65 + 220 = 16470 .

16470 dapat dibagi dengan 3, sehingga hasil bagi 16470/3 = 5490 mengkodekan karakter ASCII yang dapat dicetak atau umpan baris. Ada 96 di antaranya dan 5490 = 96 × 57 + 18 , yang berarti bahwa kami telah mendekodekan karakter ASCII yang dapat dicetak pada indeks berbasis 0 18 , yaitu '2' .

Kita dibiarkan dengan 57 , yang juga dapat dibagi dengan 3 , sehingga hasil bagi 57/3 = 19 = 96 × 0 + 19 mengkodekan karakter ASCII yang dapat dicetak pada indeks berbasis-0 18 , yaitu '3' .

Ini menyisakan 0 ; proses decoding berhenti. Karakter yang dihasilkan digabungkan untuk membentuk "23"

!ḤḤ!

The faktorial atom !ternyata argumen implisit 0 ke 1 . Dua doa dari atom unhalve mengubah 1 menjadi 2 , kemudian 2 menjadi 4 . Akhirnya, !hitung 4! = 24 .

³HH

Dengan tidak adanya argumen baris perintah, konstanta ³menampung 100 . Dua doa dari 100H berubah menjadi 50 , kemudian 50 menjadi 25 .

ØaM

Konstanta Øamemegang huruf kecil. The maksimal atom Mmenghasilkan semua indeks item maksimal, dan karena z adalah huruf kecil terbesar, hasilnya adalah [26] .

;;;;;;;;;;;;;;;;;;;;;;;;;;;¬¬ḅ¬

Dua puluh enam salinan dari concatenate atom ;menggabungkan awal nilai kembali 0 dan dua puluh enam contoh dari argumen default 0 , membangun sebuah array dari 27 nol.

¬adalah atom NOT logis , jadi tambahkan 1 ke array nol. Berikutnya ¬meniadakan semua elemen dalam array, meninggalkan kita dengan array 27 yang dan 1 nol.

adalah unbase atom dan mengkonversi array digit dari argumen kirinya dari basis yang ditentukan dalam argumen kanan menjadi integer. ḅ¬mengkonversi dari unary ke integer, sehingga hanya melakukan penjumlahan. Untuk array 27 yang, ini mengembalikan 27 .

irið8c

The indeks atom imempromosikan argumen kiri 0 untuk [0] , kemudian menemukan indeks argumen yang tepat 0 dalam array itu, menghasilkan 1 .

The berbagai atom rmembangun sebuah menaik atau menurun berkisar dari itu meninggalkan argumen untuk satu haknya. Argumen yang benar adalah argumen 0 implisit , jadi ini menghasilkan [1, 0] . Doa kedua dari imenemukan indeks 0 di [1, 0] , menghasilkan 2 .

ðmemulai sebuah rantai diad yang baru. Karena rantai sebelumnya adalah niladik, argumen kiri dan kanan dari rantai ini akan sama dengan nilai pengembalian rantai pertama ( 2 ). cdalam atom kombinasi . Dengan argumen kiri 8 dan argumen kanan 2 , ia menghitung semua kombinasi 2 elemen unik, tidak berurutan dari satu set 8 elemen, menghasilkan 8C2 = 8! / (6! 2!) = 28 .

⁶ḲĠṂ°İṂĊ

Konstanta memegang karakter spasi dan menetapkan argumen dan mengembalikan nilai ke '' . Kata - kata atom mempromosikan karakter "" ke string tunggal "" dan membaginya menjadi spasi, menghasilkan [[], []] .

The kelompok atom Ġkelompok semua indeks dari elemen yang sama. Karena kedua elemen dari nilai pengembalian terakhir sama, ia mengembalikan [[1, 2]] di sini. The minimum atom ekstrak minimal (satu-satunya) elemen dari array ini, menghasilkan [1, 2] .

The gelar atom °mengkonversi kedua bilangan bulat dari derajat sexagesimal ke radian, menghasilkan 1 ° × 2π / 360 ° = π / 180 dan 2 ° × 2π / 360 ° = π / 90 . The terbalik atom mengambil invers perkalian, menghasilkan 180 / π ≈ 57,3 dan 90 / π ≈ 28,6 .

Kemudian, sekali lagi mengambil minimum, menghasilkan 28,6 . Akhirnya, atom langitĊ mengubah 28,6 menjadi 29 .

œṡ¹ẆẆTUṖṖṖṖP

The identitas atom ¹mengembalikan 0 untuk argumen implisit 0 . The perpecahan di sekitar atom œṡmempromosikan kedua argumen (baik 0 ) ke [0] , kemudian membagi [0] sekitar subarrays berdekatan sama dengan [0] . Ini menghasilkan [[], []] .

The jendela geser atom membangun semua subarrays bersebelahan argumen. Instance pertama mengubah [[], []] menjadi [[[]], [[]], [[], []]] , instance kedua mengubah [[[]], [[]], [[]] , []]] ke dalam
[[[[]]], [[[]]], [[[], []]], [[[]], [[]]], [[[]], [ [], []]], [[[]], [[]], [[], []]]] .

The Kebenaran atom Tdaftar semua indeks elemen truthy. Tidak ada array di level pertama yang kosong, jadi ini menghasilkan [1, 2, 3, 4, 5, 6] . The upend atom Umembalikkan array ini, menghasilkan [6, 5, 4, 3, 2, 1] .

Empat salinan atom pop menghapus empat elemen terakhir, meninggalkan kita dengan [6, 5] . Akhirnya, atom produkP mengubah susunan ini menjadi 30 .

31 - 40

ȷ½RṪ

ȷadalah singkatan untuk 1 × 10 3 = 1000 . The akar kuadrat atom ½menghasilkan 31,6 , dimana kisaran atom Rberubah menjadi [1, ..., 31] . Akhirnya, atom ekor mengekstraksi elemen terakhir, menghasilkan 31 .

LµdddddµFL

The panjang atom Lmempromosikan argumen implisit 0 untuk [0] , kemudian mengambil panjang untuk menghasilkan 1 . µmemulai rantai monadik yang baru, dan hasilnya 1 menjadi argumennya.

Untuk argumen x dan y , atom divmodd menghasilkan [x / y, x% y] . Setiap panggilan akan memiliki y = 1 , sehingga hasilnya akan selalu [x, 0] .

Panggilan pertama dimulai dengan x = 1 , menghasilkan [1, 0] . dhanya beroperasi pada bilangan bulat, sehingga vektor dalam panggilan berikutnya. Panggilan kedua menghasilkan [[1, 0], [0, 0]] , yang ketiga [[[1, 0], [0, 0]], [[0, 0], [0, 0]]]] , dan yang kelima dan terakhir adalah array dengan kedalaman 5 yang berisi satu dan 31 nol.

µsekali lagi memulai rantai monadik baru, dan array dari sebelumnya menjadi argumennya. The datar atom Funnests array ini, menghasilkan array datar dari satu dan 31 angka nol. Akhirnya, Lambil panjang hasilnya, kembali 32 .

33

Repdigit lain, literal lain.

WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWŒḊ

Setiap instance dari bungkus atom mengubah argumen z ke [z] . Dengan nilai pengembalian awal 0 , semua 34 instance bersama-sama menghasilkan [[[[[[[[[[[[[[[0] []] []]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Akhirnya, atom kedalamanŒḊ menghitung kedalaman maksimal array yang dihasilkan, menghasilkan 34 .

ẇɓæ«æ«æ«æ«æ«|æ«|

The window ada atom mempromosikan kedua argumen (baik default 0 ) ke [0] , maka tes jika ** [0] ** terjadi sebagai subarray bersebelahan [0] . Ya, jadi mengembalikan 1 .

ɓmemulai sebuah rantai diad yang baru. Karena rantai sebelumnya adalah niladik, argumen kiri dan kanan dari rantai ini akan sama dengan nilai pengembalian rantai pertama ( 1 ). Rantai menggunakan dua atom diad yang berbeda: bitshift left ( æ«) dan bitwise OR ( |).

Rantai diad yang dimulai dengan tiga atau lebih diad awalnya memanggil angka dua pertama dengan argumen rantai. Di sini, ini memberi 1 << 1 = 2 . Enam diad selanjutnya dikelompokkan menjadi berpasangan (disebut garpu ), di mana angka dua paling kanan disebut pertama dengan argumen rantai, lalu yang paling kiri disebut dengan nilai pengembalian sebelumnya ke kedua sisi.

Karena æ«æ«, kita mendapatkan 2 << (1 << 1) = 2 << 2 = 8 . Kemudian, æ«æ«hitung 8 << (1 << 1) = 8 << 2 = 32 . Sekarang, |æ«dapatkan kami 32 | (1 << 1) = 32 | 2 = 34 .

Akhirnya, trailing |bertindak seperti hook dan disebut dengan nilai return sebelumnya sebagai argumen kiri dan argumen kanan rantai sebagai yang benar. Ini mengembalikan 34 | 1 = 35 .

⁹ṚḢ²

Dengan tidak adanya argumen kedua, konstanta menampung 256 . The terbalik atom mempromosikan 256 ke array [2, 5, 6] dan membalikkan itu untuk menghasilkan [6, 5, 2] . Kemudian, atom kepala mengekstraksi elemen pertama, dan atom kuadrat² kembali ** 6² = 36 *.

‘‘‘0‘‘‘‘‘‘‘

The increment atom increment argumen dengan 1 , sehingga ‘‘‘mengubah awal nilai kembali 0 ke 3 . 0 berikut ini adalah nilad yang tidak dapat diparseabel, artinya tidak cocok dengan rantai dengan cara apa pun. Akibatnya, nilai pengembalian sebelumnya ( 3 ) dicetak ke STDOUT, kemudian diganti dengan nilai nilad ( 0 ).

7 salinan berikut mengubah 0 ini menjadi 7 , yang dicetak secara implisit ketika program selesai.

’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ạ

The penurunan atom decrements argumen dengan 1 , sehingga tiga puluh delapan salinan mengubah nilai kembali awal 0 ke -38 . The perbedaan mutlak atom menghitung perbedaan unsigned antara -38 dan argumen implisit 0 , kembali 38 .

-____---__________

-adalah singkatan untuk -1 dan menetapkan argumen tautan dan mengembalikan nilai ke -1 . Masing _- masing adalah sebuah instance dari atom pengurangan diad , yang argumen kanannya akan default ke -1 jika hilang.

Pertama, -____-menghitung (-1) - (-1) - (-1) - (-1) - (-1) = 3 . -1 berikut adalah nilad yang tidak dapat diparseable, sehingga nilai pengembalian sebelumnya ( 3 ) dicetak ke STDOUT, kemudian diganti dengan nilai nilad ( -1 ).

Selanjutnya, -_menghitung (-1) - (-1) = 0 , di mana literal -menetapkan argumen kiri_ dan menggunakan nilai kembali sebagai yang benar. Sembilan salinan berikut _kurangi argumen default -1 dari nilai kembali, menghasilkan 9 , yang dicetak secara implisit ketika program selesai.

”(O

”(adalah karakter literal dan atom ordinalO mencari titik kode Unicode-nya, menghasilkan 40 .

41 - 47

⁵ḶxḶ⁵ị⁵ḶxḶḣṢ

Dengan tidak adanya argumen baris perintah ketiga, konstanta berlaku 10 . The unlength atom menciptakan kisaran 0-based, khususnya [0, ..., 9] untuk argumen 10 , untuk kedua sisi berulang di tempat atom x. Yang terakhir cocok dengan elemen dari argumen kirinya dengan pengulangan dari yang kanan, dan mengulangi masing-masing elemen dengan jumlah kali yang sesuai. Dengan [0,…, 9] sebagai argumen kiri dan kanan, kita mendapatkan nol nol, satu, dua, dan lain-lain.

The indeks ke atom menjemput unsur argumen yang tepat pada indeks tertentu dalam satu kiri. Dengan argumen kiri 10 ( ke kiri) dan argumen kanan [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] (hasil sebelumnya), ini menghasilkan 4 .

Rantai hingga titik ini diikuti oleh nilad yang tidak dapat diurai , sehingga nilai pengembalian sebelumnya ( 4 ) dicetak ke STDOUT, nilai pengembalian diatur ke 10 , dan sisa rantai diurai seperti biasa.

Seperti sebelumnya, ⁵ḶxḶakan menghasilkan array [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] . Kali ini, kami menyebut atom yang diurutkan pada argumen 10 , yang mempromosikan 10 ke [1, 0] , lalu mengurutkannya untuk menghasilkan [0, 1] . The kepala diad atom sekarang mengambil prefiks dengan panjang 0 dan 1 dari hasil ke kiri, meninggalkan kami dengan [[], [1]] . Saat dicetak, hanya 1 yang akan tetap terlihat.

⁽{ʂ%⁽{}

dan dua karakter berikutnya membentuk literal numerik. Jika j dan k adalah titik kode mereka di halaman kode Jelly dan (j, k) <(124, 250) , kita mendapatkan integer 1001 + 250j + k . Poin kode '{' , '}' , dan 'ʂ' adalah 123 , 125 , dan 167 , sehingga literal kiri mengevaluasi hingga 1001 + 250 × 123 + 167 (= 31918) , sedangkan yang kanan mengevaluasi hingga 1001 + 250 × 123 + 125 (= 31876) .

Karena bilangan bulat kiri kurang dari dua kali lebih besar dari yang benar, hasilnya adalah (... + 167)% (... + 125) = (... + 167) - (... + 125) = 167- 125 = 42 .

ẊẠżv©żvżvżvọ®®Ạżvżvżvọ®

The mengocok atom randomizes urutan elemen argumen ini; argumen numerik z dipromosikan ke kisaran [1,…, z] sebelumnya. Untuk argumen implisit 0 , rentang ini kosong dan menghasilkan [] . The semua atom mengembalikan 1 jika semua elemen argumen ini adalah truthy, 0 jika tidak. Karena array kosong tidak mengandung elemen falsy, mengembalikan 1 di sini.

The zip dengan atom ż(angka dua) mengambil argumen x dan y dan transposes pasangan [x, y] . Untuk bilangan bulat x dan y , ini hanya menghasilkan [[x, y]] , jadi ini khusus ż, disebut dengan argumen 1 dan 0 (argumen implisit), mengembalikan [[1, 0]] . The eval diad atom vternyata semua array datar (yang hanya berisi angka dan karakter) i argumen kiri ke string, kemudian mengevaluasi string yang dihasilkan sebagai program Jelly monadik dengan argumen yang tepat sebagai argumen program. Sejak ["10"]hanya terdiri dari literal, ini mengabaikan argumen yang benar vdan hanya menghasilkan [10] .

The copy cepat ©atase ke vdan salinan hasilnya ke dalam register. Kemudian kejadian dari recall atom ®(nilad a) akan mengambil [10] dari register.

Tiga salinan żvpekerjaan berikutnya seperti sebelumnya, memetakan [10] ke [[10, 0] hingga [100] menjadi ... hingga [10.000] . The rangka atom tes berapa kali argumen kiri dibagi oleh salah satu haknya, jadi di sini, itu menghitung urutan 10 (diambil dengan ®) di 10000 = 10 4 , menghasilkan [4] .

Berikut ®ini adalah nilad yang tidak dapat diparseabel, sehingga nilai pengembalian sebelumnya ( [4] ) dicetak ke STDOUT, kemudian diganti dengan nilai nilad ( 10 ). Kami menerapkan selanjutnya, menghasilkan 1 . (Ini diperlukan karena nilad diikuti oleh angka dua akan dapat diuraikan pada saat ini.)

Seperti sebelumnya, żvżvżvmenambahkan tiga nol ke nilai pengembalian saat ini, mengubah 1 menjadi [1000] . Akhirnya, ọ®hitung urutan 10 dalam 1000 = 10 3 , dan 3 dicetak ke STDOUT ketika program selesai.

44

Namun repdigit lain, lagi literal.

111111l11&K1111111Kl11&

Pertama dan terpenting, literal 111111menetapkan argumen dan nilai pengembalian awal ke 111111 . Aliran lain 1juga literal.

ladalah atom logaritma , yang menghitung logaritma argumen kirinya ke pangkalan yang ditentukan di sebelah kanan. Ketika dipanggil pada 111111 dengan argumen 11 yang tepat , kita mendapatkan log 11 111111 ≈ 4.85 .

Kata - kata atom Kbergabung dengan argumen daftar di spasi, setelah mempromosikan numerik / karakter z ke [z] . Di sini, kita cukup menggunakannya untuk mengubah argumen tautan 111111 menjadi [111111] . (Kami tidak memerlukan array di sini, tetapi kami sudah kehabisan atom identitas.) Atom bitwise AND& mengambil nilai kembali ke kedua sisi, melemparkannya ke integer jika diperlukan, dan menghitung bitwise AND. Dalam kasus khusus ini, ia mengembalikan [4,85 & 111111] = [4 & 111111] = [4] .

Berikut 1111111ini adalah nilad yang tidak dapat diparseabel, sehingga nilai pengembalian sebelumnya ( [4] ) dicetak ke STDOUT, kemudian diganti dengan nilai nilad ( 1111111 ). Kkemudian mengubah bilangan bulat ini menjadi [1111111] . (Sekali lagi ini tidak benar-benar diperlukan, tetapi nilad yang diikuti oleh angka dua akan dapat diuraikan pada saat ini.)

Seperti sebelumnya, l11menghitung log 11 1111111 ≈ 5.81 , lalu &mengembalikan [5.81 & 111111] = [5 & 111111] = [5] .

,SS
ỊỊ,ÇS
ÇÑÇÇÇÑ

Ini adalah satu-satunya program yang terdiri dari beberapa tautan yang ditentukan pengguna. Tautan terakhir adalah tautan utama dan dijalankan ketika program dimulai, yang tersisa adalah tautan pembantu. Quick Çselalu merujuk ke tautan di atas yang sekarang dan mengeksekusinya secara monadik. Demikian juga, quick Ñselalu merujuk ke tautan di bawah yang sekarang (membungkus) dan juga mengeksekusinya secara monadik.

Tautan atas terdiri dari atom pasangan, - pasangan angka yang mengubah argumen x dan y menjadi [x, y] - dan jumlah atom S- monad yang mempromosikan argumen bilangan bulat z ke [z] dan mengurangi argumen array dengan tambahan. Ketika tautan ,SSdisebut dengan argumen integer n , itu menghitung Σ [n, Σn] = Σ [n, n] = 2n .

Tautan tengah terdiri dari atom-atom di atas Ç, cepat yang disebutkan di atas , dan atom tidak penting - sebuah monad yang menghasilkan 1 untuk argumen numerik z dengan -1 ≤ z ≤ 1 , tetapi 0 untuk semua lainnya. Menerapkan dua kali pada argumen integer dan pada dasarnya menggantinya dengan 1 , karena output dari yang pertama ( input dari yang kedua) selalu tidak signifikan. Hasil ini kemudian dipasangkan dengan nilai pengembalian Ç(disebut dengan argumen n ), dan pasangan yang dihasilkan dikurangi dengan Σ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1S . Secara total, kami menghitung.

Dengan dua tautan penolong ini, tautan utama sekarang dapat membuat bilangan bulat non-negatif dengan melihat angka binernya. Dengan nilai pengembalian awal 0 , rantai ÇÑÇÇÇÑmenghitung hasil akhir ((((((0 × 2 + 1) × 2) × 2 + 1) × 2 + 1) × 2 + 1) × 2 = ((5 × 2 + 1) × 2 + 1) × 2 = 46 .

ÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆnÆn

The prime berikutnya atom menemukan terkecil bilangan prima positif yang ketat lebih besar dari argumen. Dengan nilai pengembalian awal 0 , lima belas doa Ænmenghitung bilangan prima kelima belas, yaitu 47 .


7
Saya telah menghabiskan sepanjang hari mencoba untuk mengejar 38 Neim dan kemudian saya gulir ke bawah dan melihat ini. Tantangan diterima!
Shaggy

1
TL; DR Anda dapat hitung sampai 47, dan Anda seorang penyihir di Jelly.
cascading-style

Apakah semua "atom" byte tunggal seperti yang diminta dalam tantangan? Jika demikian, pengkodean apa ini?
M.Herzkamp

4
@ M.Herzkamp Jelly menggunakan halaman kode sendiri .
Dennis

1
Saya membaca penjelasan secara rinci untuk pertama kalinya sekarang. Ini sangat mengesankan. Beberapa di antaranya hanya konyol :-)
Stewie Griffin

62

brainfuck , skor 2, 255 144 10 byte

... Ya, bukan ide terbaik karena saya hanya memiliki 8 karakter (tarpits akan tarpit) untuk bekerja dengan tetapi mari kita lihat berapa banyak yang mungkin. Saya pikir ini semua yang mungkin. : P Jawaban ini menunjukkan enam dari delapan karakter yang digunakan brainfuck, dua lainnya ,adalah input dan .output.

+
>--[<->-]

Visualisasikan secara online!

Penjelasan

Setiap angka dibuat dan disimpan pada sel awal pada pita. Sangat bergantung pada sel pembungkus, yang tidak diimplementasikan dalam beberapa penerjemah.

1 :

[ 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

+  increment the current cell

[ 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

2 :

[ 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

>  move to the next cell
-- decrement the current cell twice

[ 0 |254| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
      ^

[  while the current cell is not 0
<  move to the previous cell
-  decrement the current cell

[255|254| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

>  move to the next cell
-  decrement the current cell

[255|253| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
      ^

]  repeat while the current cell is not 0

...

[ 3 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
      ^

[ 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
  ^

[ 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ]
      ^

5
Sekarang lakukan itu di otak. : P
DJMcMayhem

38

Neim , skor 38, 327 byte

1: 𝔼
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
10: β
11: γ
12: δ
13: ε
14: ζ
15: η
16: θ
17: ι
18: κ
19: λ
20: μ
21: ν
22: ξ
23: π
24: ρ
25: σ
26: ς
27: τ
28: υ
29: φ
30: χ
31: ψ
32: ω
33: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
34: <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<𝐀
35: 𝐓0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻0𝐓𝔻
36: ℂ𝐋𝐠𝐋𝐠𝐋𝐠𝐋𝐝𝐬𝕏𝐬
37: α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊α𝕊
38: 𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝔸𝐥

Penjelasan:

  • Untuk 1, kami menggunakan token 'check for equality', di sini mengeksploitasi bahwa ketika Neim mencoba untuk memasukkan input kosong, ia mendapat 0. Karena 0 dan 0 setara, ini mendorong 1 yang dicetak secara implisit dicetak
  • Dari 2 hingga 9, kami hanya menggunakan literal angka.
  • Dari 10 hingga 32, Neim sebenarnya memiliki konstanta satu byte untuk semuanya (ya, ini gila).
  • Untuk 33, kami hanya menggunakan perintah increment. Pada byte pertama, Neim mencoba memunculkan sesuatu sehingga dapat meningkatkannya, tetapi karena inputnya kosong, defaultnya adalah muncul0 .
  • Untuk 34, kami menggunakan pendekatan yang sama, tetapi mengurangi, dan mengambil nilai absolut.
  • Untuk 35, kami mengeksploitasi fakta bahwa nol faktorial adalah satu, dan kami menggunakannya dengan menduplikasi satu dan berulang kali menambahkan
  • Untuk 36, kita gunakan untuk memeriksa 0 dan 0 untuk co-primality, yaitu mereka. Ini mendorong 1. Kemudian kita menggunakan bilangan prima pertama 𝐋, yang menghasilkan daftar tunggal berisi hanya 2. Kita kemudian mendapatkan elemen terbesar ( 𝐠), yang mendorong 2 sebagai angka. Kemudian kami ulangi proses ini sampai kami mendapatkan daftarnya [2 3 5 7 11]. Setelah itu, kita gunakan 𝐝untuk menghitung delta, menghasilkan daftar [1 2 2 4]. Selanjutnya, kami menggunakan 𝐬untuk mendapatkan jumlah - yaitu 9 - lalu kami menghitung rentang eksklusif dari 0 hingga 9, menghasilkan [0 1 2 3 4 5 6 7 8]. Akhirnya, 𝐬digunakan lagi untuk mendapatkan 37.
  • Untuk 37, αadalah konstanta yang merepresentasikan negatif, dan kami berulang kali mendorongnya dan mengurangi (lagi-lagi mengeksploitasi fakta bahwa ketika kami mencoba muncul pada input kosong, 0 ditekan)
  • Untuk 38, sekali lagi menggunakan 0 default untuk input kosong, kami terus menambahkan 0 ke dirinya sendiri, membuat daftar panjang, lalu menghitung panjangnya.

Bisa dicoba di sini


3
Anda mencampuradukkan sesuatu di sekitar 36-37.
Erik the Outgolfer

2
Bukankah karakter khusus itu dikodekan dengan lebih dari 1 byte? Jika demikian, itu akan membuatnya 860 Bytes menurut penghitung byte mothereff dan aturan tantangan menyatakan itu all characters must be encoded using a single byte in the language you choose. Apakah Neim mengkodekan karakter khusus hanya dalam 1 byte? Bagaimana?
Hankrecords


2
Anda belum menggunakan karakter 1. Tentunya Anda bisa memanfaatkannya?
Bergi

34

Python 2, 15

Ini awal, mencari lebih banyak

Terima kasih kepada leo yang tipnya membantu saya mencapai angka 15

[[[]]>[]][[]>[]]>>[[]>[]][[]>[]]

2

import math
print'%i'%math.pi

((()<())<())<<((()<())<())<<((()<())<())

5

6

7

8

9

11^1 

33/3

4--4--4

__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__+__debug__

q=""=="";qq=q=="";qqq=~q*~q*~q;~qqq*~q*~qq

0xF

2
Anda dapat menggunakan -~-~-~-~-~-~-~-~-~[[]==[]][[]<[]]untuk 10 dan 0xD13 untuk jumlah byte total yang lebih rendah
ov

Bisakah Anda bagaimana menggunakan fakta yang ''is''bernilai true untuk membuat nomor lain?
Notts90

@ Nots90 Sayangnya saya kehabisan operasi Untuk menghasilkan sesuatu dari itu. Jika Anda menemukan cara untuk membuat nomor baru atau jika boolean beri tahu saya
Sriotchilism O'Zaic

1
14 tidak ada paren penutup:((()<((),))|(()<((),))<<(()<((),))|(()<((),))<<(()<((),))<<(()<((),)))<<(()<((),))
TemporalWolf

1
Sebagai catatan, rev terakhir Anda belum menggunakan yang berikut dari string.printable:c, j, k, l, s, v, w, y, z, A, B, C, D, E, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, !, #, $, &, ., :, ?, @, \\, `, {, }, \t, \r, \x0b, \x0c
wnnmaw

23

Japt , 448 byte, skor 42

Kolaborasi besar antara Shaggy , ETHproductions , & Oliver .

v
y
Íà
Qiiii)iiii)âQ
ÂHq
LÁL
´Vn´VnVnVn
8
9
A
B
C
D
E
F
G
J-----J---J---J---J
[¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾]x
;Iìw
~~½e½e½e½e~½e½
++T+++T+++T+++T+++T+++T
22
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
4á
5²
°UU°°°U°°U°°U°°U°°U
»³³
7/¼
$'_____________________________b'$bb
ZµÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"aa
Sc
33
Mg011
##
6p
Rí í í í í è.
`¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥`l
¨N|N¹òò¹m···m|¹mò¹m···m|¹mò¹m···m|¹o
º¤¤*º¤*º¤
(Å<<(Å<<(Å<<(Å<<(Å<<(Å^(Å<<(Å<<(Å<<(Å^(Å
Y±Y¶YY±YY±Y±Y¶YY±YY±Y±Y¶YY±Y

Karakter (berguna) ini tersisa:

!%&,:=>?@OPWX\dfhjkrstuz{}¡¢£¦§©ª«¬®¯¸ÀÃÆÇÈÐßãäåæçéêëîïñóôõö×øÿ

Penjelasan

Beberapa hal yang perlu diketahui tentang Japt sebelum kita mulai, yang sering saya manfaatkan. Pertama, Japt memiliki 6 variabel yang dicadangkan untuk input, yaitu huruf besar U-Z. Jika tidak ada input yang dilewatkan melalui variabel-variabel tersebut, semuanya default ke 0. Hal kedua dibahas dalam tip ini .

Klik cuplikan apa saja untuk mencobanya di penerjemah online .


v

Ketika diterapkan pada angka, vmetode ini mengambil bilangan bulat n sebagai argumen, dan mengembalikan 1 jika angka tersebut dapat dibagi dengan n , 0 jika tidak. Jika n tidak diberikan maka standarnya adalah 2 . 0 (nilai default untuk U) dapat dibagi 2 , jadi ini memberi kita 1 .


y

Sangat mirip dengan yang pertama. Ketika diterapkan pada angka, ymetode ini mengambil bilangan bulat n sebagai argumen, dan mengembalikan GCD dari dua angka tersebut. Jika n tidak diberikan maka standarnya adalah 2 . Karena 0 dapat dibagi 2 , GCD (0, 2) memberi kita 2 .


Íà
Íadalah jalan pintas untuk n(2)atau 2- this. Karena kami tidak memiliki input, kami default thiske 0, yang menghasilkan 2-0 = 2.

àmengembalikan jumlah kombinasi [1...this], yang mengembalikan 3


Qiiii)iiii)âQ

Qdefault ke satu tanda kutip. ipada string memasukkan string lain di awal; seperti yang dijelaskan dalam # 3 , masing-masingiiii) - setara dengan .i("i".i("i"))di JS, sehingga memasukkan dua salinan idi awal string. Lakukan ini dua kali dan Anda memiliki string iiii". âQkemudian disimulasikan .search(Q), memberikan indeks pertama "dalam string, yaitu 4 .


ÂHq
Hadalah konstanta untuk 32 . Ketika diterapkan pada suatu bilangan, qmetode, yang menggunakan integer n sebagai argumen, mengembalikan akar ke- n dari bilangan itu. Jika n tidak diberikan, nilai defaultnya adalah 2, jadi beri kami akar kuadrat dari 32 yang kira-kira 5.6568 . adalah jalan pintas untuk , yang memberi lantai hasil, memberi kita 5 .HqÂ~~


LÁL
Ldiatur ke 100 , dan Ámerupakan jalan pintas untuk >>>(zero-fill bitwise shift kanan) 100>>>100sama dengan 100>>>4(operan kanan membungkus mod 32), yaitu 6 .


´Vn´VnVnVn

Seperti disebutkan sebelumnya, Vstandarnya adalah 0 . ´adalah jalan pintas untuk --operator, sehingga kode ini setara dengan JS berikut:

(--V).n((--V).n(V.n(V.n())))

X.n(Y)setara dengan Y - X , atau -X + Y ; --Vpengembalian pertama -1 , dan -2 kedua , jadi ini setara dengan - (- 1) + (- (- 2) + (- (- 2) + - (- 2))) . Menyederhanakan, kita mendapatkan 1 + 2 + 2 + 2 = 7 .


8
9

Secara harfiah, 8 dan 9 .


A
B
C
D
E
F
G

Ini adalah konstanta untuk 10 - 16 , inklusif.


J-----J---J---J---J

Jdiatur ke -1 . Penerjemah Japt entah bagaimana berhasil mengurai ini dengan benar, sebagai (J--) - (--J) - (--J) - (--J) - (--J). Melakukan lebih banyak matematika, kami menemukan bahwa ini setara dengan (-1) - (-3) - (-4) - (-5) - (-6) , atau -1 + 3 + 4 + 5 + 5 + 6 = 17 .


[¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾]x

¾adalah, seperti yang Anda duga, jalan pintas untuk .75. Kami menempatkan 24 salinan 0,75 dalam sebuah array, lalu dijumlahkan denganx , memberikan 0,75 * 24 = 18 .


;Iìw

Saya pikir ini adalah favorit saya. ;pada awal program mengubah nilai-nilai beberapa konstanta Japt; tanpa itu Iadalah 64 , tetapi dengan itu, Iadalah 91 . ìwmengonversinya menjadi daftar angka dan berjalan wpada daftar, membalikkan susunan, lalu mengonversi kembali ke angka untuk memberi kita 19 .


~~½e½e½e½e~½e½
½adalah jalan pintas untuk .5. epada angka x mengambil argumen y dan mengembalikan x * 10 y . Jadi rantai perhitungan yang terjadi adalah:

           ½e½     1.5811  (.5 * sqrt(10))
          ~       -2
        ½e         0.005  (.5 * (10 ** -2))
      ½e           0.5058
    ½e             1.6024
  ½e              20.0138

Dan final ~~berfungsi untuk meratakan ini menjadi bilangan bulat, menghasilkan hasil kami sebesar 20 .


++T+++T+++T+++T+++T+++T
Tdiatur ke 0 . ++adalah operator increment di JS dan juga di Japt; T+++Tdiuraikan sebagai (T++) + T, tetapi ++T+++Tdiurai sebagai (++T) + (++T), jadi ini setara dengan kode JS

(++T) + (++T) + (++T) + (++T) + (++T) + (++T)

Hasilnya adalah 1 + 2 + 3 + 4 + 5 + 6 , yang berjumlah 21 .


22

A literal 22 .


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Äadalah jalan pintas untuk +1, jadi ini hanya menjumlahkan 23 1 s.


Ini menemukan jumlah permutasi [1, 2, 3, 4], yaitu 4! = 24 .


²adalah jalan pintas untuk p2, yang meningkatkan angka dengan kekuatan dua. 5 ** 2 adalah 25 .


°UU°°°U°°U°°U°°U°°U

°adalah jalan pintas untuk ++operator, atau jika tidak dapat diuraikan seperti itu + +,. Seperti disebutkan sebelumnya, ketika tidak ada input, Ustandarnya adalah 0 . Jadi kode ini setara dengan (++U), (U++) + + (++U) + + (++U) + + (++U) + + (++U) + + (++U), yang sangat mirip dengan # 17 : Upertama kali ditambahkan 1, kemudian berulang kali ditambahkan dan ditambahkan sedemikian rupa sehingga hasil akhirnya adalah 1 + 3 + 4 + 5 + 5 + 6 + 7 = 26 .


»³³

³adalah jalan pintas untuk pmetode dengan argumen 3 . Namun, jika huruf kecil muncul langsung setelah tanda kurung-kiri ( »adalah jalan pintas untuk ((), itu menjadi string. Ini memungkinkannya diteruskan ke metode dan disebut sebagai fungsi (yaitu akan pemetaan oleh .p(3)). Dalam hal ini, bagaimanapun, ("p",3)mengembalikan kita 3, lalu kita menaikkannya ke kekuatan 3( padalah metode kekuatan ketika diterapkan ke angka), yang memberi kita 27 kita .


7/¼

¼, seperti yang mungkin Anda ketahui sekarang, adalah jalan pintas untuk .25, jadi ini menghitung 7 / 0,25 = 28 .


$'_____________________________b'$bb

Apa pun yang dibungkus dengan $simbol diperlakukan sebagai JavaScript murni, jadi kami memiliki string yang terdiri dari 29 garis bawah diikuti oleh a b. (Tanpa $, 'akan menjadi string karakter tunggal.) bMetode ketika diterapkan ke string mengembalikan indeks pertama argumennya dalam string itu. Seperti yang dijelaskan di # 3 , yang terakhir bdikonversi menjadi string, jadi kami mengambil indeks pertama dari bstring kami, yaitu 29 .


ZµÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ

µadalah jalan pintas untuk -=, dan Éuntuk -1. Efeknya mengurangi 30 salinan -1 dari 0 , yang memberi 30 .


"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"aa

Sangat mirip dengan # 29. The ametode, bila diterapkan pada string, mengembalikan indeks terakhir dari argumen dalam string itu. Menggunakan 0-indexing, indeks terakhir adalam string 32 adetik adalah 31 .


Sc

S sudah ditentukan untuk satu ruang tunggal, dan c pada string char tunggal mengembalikan kode char-nya, memberikan 32 .


33

Harfiah 33 .


Mg011

MgNmengembalikan nomor Fibonacci Nth. 011adalah 9 dalam oktal; angka Fibonacci 9 adalah 34 .


##

#mengembalikan kode karakter selanjutnya. Kode char #itu sendiri terjadi 35 , membuat pekerjaan kita di sini sangat mudah.


6p

padalah eksponensial, dan tanpa argumen kedua defaultnya adalah 2 ; dengan demikian, ini dicetak 6 ** 2 = 36 .


Rí í í í í è.

Yang ini agak rumit. Rdefault ke satu karakter baris baru (bahwa itu baris baru menjadi penting nanti). ípada string, tanpa argumen apa pun, mengambil setiap karakter dan menambahkan indeksnya: transformasi yang agak tidak berguna, tetapi hasilnya melalui 5 iterasi adalah ini: (menggunakan Ralih-alih baris baru literal)

R
R0
R001
R0010213
R001021304251637
R0010213042516370849210511112613314715

Menarik bagaimana setiap entri hanyalah awalan dari yang berikutnya ... Namun, bagian terakhir è.,, menghitung berapa banyak kecocokan /./gyang ditemukan dalam hasil. Ada 38 karakter di string; namun, karena /./ghanya cocok dengan karakter yang bukan baris baru, hasilnya adalah 37 .


¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥l

Tanda Punggung menandai string yang dikompresi, dan ¥didekompresi menjadill . lpada string memberi length, jadi setelah dekompresi, ini memberi 38 .


¨N|N¹òò¹m···m|¹mò¹m···m|¹mò¹m···m|¹o

Oooh, yang ini doozy. Pertama, kami hasilkantrue dengan ¨N( ¨kependekan dari>= , dan Ntanpa input adalah array kosong), kemudian mengonversikannya menjadi 1dengan |N. Dari sana dan seterusnya menjadi sangat gila:

ò    Inclusive range [0..1],            [0, 1]
 ò   making each an inclusive range.    [[0], [0, 1]]
m·   Join each on newlines.             ["0", "0\n1"]
·    Join on newlines.                  "0\n0\n1"
·    Split on newlines.                 ["0", "0", "1"]
m    Map each item X and index Y to     
 |     X | Y.                           ["0" | 0, "0" | 1, "1" | 2] -> [0, 1, 3]
m    Map each by 
 ò     inclusive range.                 [[0], [0, 1], [0, 1, 2, 3]]
m··· Same as before.                    ["0", "0", "1", "0", "1", "2", "3"]
m|   Bitwise OR thing again.            [0, 1, 3, 3, 5, 7, 7]
mò   Map each by inclusive range.       [[0], [0, 1], ..., [0, 1, 2, 3, 4, 5, 6, 7]]
m··· Same as before.                    ["0", "0", ..., "5", "6", "7"]
m|   Bitwise OR again.                  ["0"|0, "0"|1, ..., "5"|30, "6"|31, "7"|32]
                                        -> [0, 1, ..., 31, 31, 39]

(Itu ¹ S hanyalah pengganti untuk close-parens dan telah dihilangkan.) Final okemudian muncul dan mengembalikan item terakhir dalam array, memberikan 39 .


º¤¤*º¤

Sebagian besar trik yang sama dengan # 3 . ¤adalah jalan pintas untuk smetode dengan argumen 2 . Namun dalam hal ini, kode yang ditranskripsikan adalah (("s", 2).s(2) * (("s", 2) * (("s", 2)))), atau disederhanakan (2).s(2) * (2 * 2),. .s(2)mengembalikan nomor sebagai string basis-2, yang memberi "10"; * (2 * 2)secara implisit mengonversi ini menjadi angka dan mengalikannya dengan 4 , memberi 40 .


(Å<<(Å<<(Å<<(Å<<(Å<<(Å^(Å<<(Å<<(Å<<(Å^(Å

Mirip dengan yang sebelumnya. Åadalah jalan pintas untuk smetode dengan argumen 1 . Namun dalam kasus ini, masing-masing transpile ke ("s", 1), yang baru mengembalikan 1 . 1<<1<<1<<1<<1<<1adalah 32 , dan 1<<1<<1<<1adalah 8 ; ini XOR bersama dengan 1untuk mendapatkan 41 .


Y±Y¶YY±YY±Y±Y¶YY±YY±Y±Y¶YY±Y

± adalah jalan pintas untuk += , dan untuk ===. Ini berarti bahwa kodenya sebenarnya

Y+=Y===Y,Y+=Y,Y+=Y+=Y===Y,Y+=Y,Y+=Y+=Y===Y,Y+=Y

Y===Y selalu benar, jadi kami dapat menyederhanakan ini beberapa:

Y+=1,Y+=Y,Y+=Y+=1,Y+=Y,Y+=Y+=1,Y+=Y

0 +1 = 1 ; 1 + 1 = 2 ; 2 + (2 + 1) = 5 ; 5 + 5 = 10 ; 10 + (10 + 1) = 21 ;21 + 21 = 42 .


Wow, ini semakin hebat sekarang :-) Anda dapat menggunakan Iquntuk 8 untuk 8kembali, Anda harus menemukan sesuatu yang lain untuk 19.
ETHproduk

@ ETHproductions: hanya digunakan quntuk 5mengizinkan saya menggunakan luntuk menambahkan nomor tambahan. Mengusahakan alternatif 2agar saya bisa mendapatkannya =kembali.
Shaggy

@Shaggy Anda dapat menggunakan untuk 2. L>>Lbisa membebaskan 6. #w s Åbisa membebaskan ;danI
Oliver

Trik yang bagus untuk 2, @obarakon; Saya menggunakan sesuatu yang mirip dengan membebaskan 3, juga. Sayangnya itu tidak akan bekerja untuk 19 karena saya sudah menggunakan #untuk 21.
Shaggy

Saya pikir Anda dapat menukar 22 dengan 18 untuk menghemat beberapa byte dan kembali *dan^
ETHproduksi

18

PHP, skor 17, 130 Bytes

karakter yang digunakan ADEFGIKLMOPRSTVXYZ=_![]()<>'"#$,;/-+*|^&0123456789afhnprstwx

Z==Z
FTP_MOREDATA
';'&w
![]<<![]<<![]
5
6
"#"|"$"|"1"
8
SIGKILL
333333>>3>>3>>3>>3>>3
99/9
22-2-2-2-2-2
strspn(XXXXXXXXXXXXXX,X)
7+7
0xf
4*4
ha^YV

1 Konstanta Boolean Z (tidak disetel) sama dengan konstanta Z

2 FTP_MOREDATA adalah konstanta dalam PHP dengan nilai 2

3 bitwise dan karakter; dan W

4 bitwise. Geser ke kiri dan masuk akal, jangan masukkan array kosong ke boolean true dengan dilemparkan ke integer 1 melalui operator shift kiri

7 bitwise Atau karakter # dan $ dan 1

9 SIGKILL adalah konstanta dalam PHP dengan nilai 9

10 bitwise Shift kanan setiap langkah adalah pembagian integer dengan 8 sehingga kami memiliki langkah 333333, 41666, 5208, 651, 81, 10

13 hitung char X di string X ... dari awal

15 nilai heksadesimal f = 15

17 bitwise Xor dengan string ha dan YV

Semua cuplikan adalah item dalam array

Cobalah online!

PHP, skor 16, 94 Bytes

karakter yang digunakan AEIMPRTUZeflnrstvwx^_&|()[]=!.*+/-<>$":0123456789

Z==Z
":"&"w"    
M_PI|[]
TRUE<<TRUE<<TRUE
5
6
A^v    
8
9
!$s.strlen($s)    
77/7
3+3+3+3
111>>1>>1>>1    
22-2-2-2-2
0xf
4*4

1 Konstanta Boolean Z (tidak disetel) sama dengan konstanta Z

2 bitwise dan karakter: dan w

3 Pi dicor ke nilai integer melalui array kosong dicor ke nol

7 bitwise xor karakter A dan v

10 variabel $ s tidak disetel! $ S = satu concat dengan panjang string dari variabel $ s

13 111/2 = 55/2 = 27/2 = 13 Divisi integer bitwise

15 nilai heksadesimal f = 15

Semua cuplikan adalah item dalam array

Cobalah online!

PHP, skor 14, 84 Bytes

karakter yang digunakan $!_^[]()%/+~-=AEILMNPRUZ0123456789delnrstx

Z==Z
2
M_PI^[]
4
5
6
ERA%11
8
9
!$s.strlen($s)
77/7
3+3+3+3
0xd    
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-NULL

1 Konstanta Boolean Z (tidak disetel) sama dengan konstanta Z

3 Pi dicor ke nilai integer melalui array kosong dicor ke nol

7 ERA adalah konstanta dengan nilai 131116 mod 11 = 7

10 variabel $ s tidak disetel! $ S = satu concat dengan panjang string dari variabel $ s adalah nol

13 nilai heksadesimal d = 13 14 bitwise tidak dan tanda minus menaikkan NULL menjadi 14

Semua cuplikan adalah item dalam array

Cobalah online!


17

R, skor 13 14

F^F                       # F==0 in R
q=""=="";q--q             # ""=="" is TRUE, TRUE == 1 (Thanks WheatWizard)
3
4
5
6
7
8
9
1e1                       # scientific notation for 10
22/2
T+T+T+T+T+T+T+T+T+T+T+T   # T == 1
0xD                       
sum(mtcars$vs)            # mtcars is a built-in dataset, summing the $vs column gives 14

Dapatkan satu ekstra berkat user2390246.

Karakter yang digunakan:

0123456789acemqrstuvxDFT^=";-/+()$


1
Anda dapat meregangkan hingga 14 jika kami diizinkan menggunakan kumpulan data bawaan. 1:, F^F2 "n"%in%"n"+"n"%in%"n":; 3-9: angka, 10: 1e111: 22/212: T--T--T--T...13: 0xD14:sum(mtcars$vs)
user2390246

Penggunaan cemerlang %dan berpikir untuk menggunakan dataset bawaan. Saya tidak mengerti mengapa itu tidak baik.
BLT

Saya memang bertanya-tanya apakah mungkin untuk mendapatkan satu lagi menggunakan data bawaan: jika ada dataset dengan nama baris dan kolom, Anda dapat memiliki perintah di sepanjang baris dataset['A','B'], asalkan tidak tumpang tindih dengan huruf yang sudah digunakan (dan terjadi mengandung nilai yang bermanfaat!). Sayangnya, sejauh yang saya tahu dari sekilas, semua dataset dengan baris bernama berisi huruf i, jadi tidak kompatibel dengan penggunaan %in%.
user2390246

Hmmm. Untuk 2, Anda bisa menggunakan trik dari WheatWizard ini jawaban Python: q=""=="";q+q. Itu akan membebaskan penggunaan surat-surat idan n. Tidak punya waktu untuk memeriksanya sekarang, tapi saya yakin ada satu tambahan di sana di suatu tempat ...
user2390246

Saya pikir kamu benar. Masalah utama tampaknya adalah menemukan dataset yang tidak menggunakan i, n, s, u, m, t, c, a, r, e, x, atau v. Mendapatkan beberapa huruf kembali akan membantu.
BLT

16

MATL , skor 21 22 23 angka (273 byte)

Terima kasih kepada J Doe karena telah memperpanjang dari 22 hingga 23 angka!

0~
'bd'd
{P}gk
HH^
5
6
7
8
9
3 3.333333333333333*
11
IEE
[B]Yq
llllllllllllllNwxwxwxwxwxwxwxwxwxwxwxwxwxwx
KUKUa-
4W
FFFFFFFFFFFFFFFFFn
TTTTTTTTTTTTTTTTTTs
rrrrrrrrrrrrrrrrrrrhhhhhhhhhhhhhhhhhhz
OOOOOOOOOOOOOOOOOOOOvZyX>
JJJJJJJJJJJJJJJJJJJJJ++++++++++++++++++++J/
22
`@QQQQQQQQQQQQQQQQQQQQQQ@@<

Cobalah online! Setiap cuplikan di tautan diakhiri denganD(tampilan) atau]D (tutup lingkaran secara eksplisit dan tampilan) untuk menghapus tumpukan dan dengan demikian mengisolasi dari potongan berikutnya.

Penjelasan

0~

Dorong 0. Meniadakan. Memberi true, yang ditampilkan sebagai 1.

'bd'd

Dorong string 'bd'. Perbedaan berurutan antara poin kode karakter.

{P}gk

Dorong array sel yang berisi angka pi. Konversi ke array numerik (yaitu ke nomor tunggal). Membulatkan ke bawah.

HH^

Dorong 2dua kali. Kekuasaan.

5

Numerik literal.

6

Numerik literal.

7

Numerik literal.

8

Numerik literal.

9

Numerik literal.

3 3.333333333333333*

Dorong 3. Dorong 3.333333333333333. Berkembang biak. Karena akurasi floating point ini memberikan 10.

11

Numerik literal.

IEE

Dorong 3. Lipat 2dua kali lipat.

[B]Yq

Tekan [6](yang sama dengan 6). Hitung prima ke- n .

llllllllllllllNwxwxwxwxwxwxwxwxwxwxwxwxwxwx

Dorong 114 kali. Jumlah elemen dalam tumpukan. Bersihkan sisa tumpukan.

KUKUa-

Dorong 4. Kotak. Lakukan yang sama. Any: give 1. Mengurangi.

4W

Dorong 4. 2dibesarkan untuk itu.

FFFFFFFFFFFFFFFFFn

Push array [false false ... false](17 kali). Jumlah elemen dalam array.

TTTTTTTTTTTTTTTTTTs

Push array [true true ... true](18 kali). Jumlah array.

rrrrrrrrrrrrrrrrrrrhhhhhhhhhhhhhhhhhhz

Tekan 19 angka acak yang diambil dari interval (0,1). Menggabungkan secara horizontal 18 kali. Jumlah elemen bukan nol dalam array.

OOOOOOOOOOOOOOOOOOOOvZyX>

Dorong 020 kali. Gabungan konten tumpukan secara vertikal (memberikan vektor kolom). Ukuran: memberikan array [20 1]. Maksimum array.

JJJJJJJJJJJJJJJJJJJJJ++++++++++++++++++++J/

Tekan 1j(unit imajiner) 21 kali. Tambahkan 20 kali. Dibagi dengan 1j.

22

Numerik literal

`@QQQQQQQQQQQQQQQQQQQQQQ@@<

Do ... while ( `) dengan ujung implisit. Dalam iterasi pertama ia mendorong indeks iterasi ( @) dan menambahnya ( Q) 22 kali, yang menghasilkan 23. Kondisi loop ( @@<) salah, sehingga loop keluar.

Beberapa ide untuk perbaikan lebih lanjut

  • (spasi) dalam snippet 10 dapat diganti dengan |
  • X>dalam snippet 20 dapat digantikan oleh p, sehingga membebaskan awalan X.
  • Saat ini tidak terpakai dan berpotensi berguna: :,A

Maukah Anda memasukkan hitungan byte?
Okx

@Okx Termasuk sekarang
Luis Mendo

15

Vim 8 pada Windows, skor 13, 104 byte

1
2
3
4
5
6
7
^R=&ts^@
9
8^O^A^O^A
0^[^X^X^X^X^X^X^X^X^X^X^X0x
:h<CR>wwwwwwwwwwwy$:q<CR>p
grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llD

^{keystroke}mewakili <C-{keystroke}>, demikian ^Xjuga <C-x>, kecuali ^@yang <C-j>. Saya masih mencoba menambahkan lebih banyak angka ke daftar ini dan <CR>mewakili umpan baris.

Catatan: untuk menjalankan perintah ini, mulailah vim menggunakan -u NONE -U NONE. Ini untuk memastikan bahwa konfigurasi Anda tidak akan mengganggu kode.

Cuplikan 1 hingga 10 memulai dalam mode sisipkan. Sementara cuplikan 12 dan 13 dimulai dalam mode normal.

Penjelasan

Cuplikan 8 adalah :^R=&ts^@. Saya harus berterima kasih kepada @ L3viathan untuk datang dengan ini dan @ nmjcman101 untuk menyarankan ^@sebagai pengganti untuk linefeed dan @ ØrjanJohansen untuk kependekan &tabstopmenjadi &ts.&tskemudian mengevaluasi ke ukuran tab, yang secara default di 8, dan nilai ini dimasukkan ke dalam editor.

Cuplikan 10 adalah 8^O^A^O^A. Kami menyisipkan angka 8, dan kemudian menambahkannya dua kali untuk mendapatkan 10.

Cuplikan 11 adalah 0^[^X^X^X^X^X^X^X^X^X^X^X0x. Kami menuliskan 0 dan mengurangi 11 kali untuk mendapatkan -11. Lalu kami menghapus minus untuk mendapatkan 11.

Cuplikan 12 adalah :h<CR>wwwwwwwwwwwy$:q<CR>p. Ini membuka menu bantuan Vim 8, yang berisi informasi berikut:

*help.txt*  For Vim version 8.0.  Last change: 2016 Sep 12

Dan urutan ws pindah ke 12, di mana titik y$menyalin nomor tersebut. Kemudian disisipkan ke dalam editor menggunakan p.

Cuplikan 13 adalah grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llDterima kasih kepada @DJMcMayhem untuk membuatnya. Ini hanya berfungsi pada Windows. Cuplikan mencari menu bantuan untuk perintah yang dimulai dengan g. Kemudian bergerak turun menggunakan juntuk sampai ke baris ini:

|g?|        g?      2  Rot13 encoding operator

setelah itu menyalin dan menempelkannya di buffer. Setelah itu, semuanya kecuali 13 dihapus dari buffer.


Cuplikan diizinkan.
Leaky Nun

Akan ^R=&tabstop+&tabstop+&tabstop<CR>Pmemberi Anda 12, atau <CR>sudah digunakan karena ^M?
L3viathan

1
Ya, maksud saya <CR>ketika saya berkata ^M, tapi terima kasih, saya akan melihat ke menghapus ^Mdari potongan 8 sekarang :)
Sapi dukun

1
@WheatWizard Kunci kontrol tidak dihitung sebagai keystroke atau byte, tetapi digunakan dalam kombinasi dengan tombol lain dan ini akan dihitung sebagai byte. Misalnya, Ctrl + A memberikan byte 0x01sementara Ctrl + X memberi 0x18. Dan jelas, kedua byte ini terpisah. Apakah itu masuk akal?
Sapi dukun

1
@ L3viathan Ketika memulai vim with -u NONE -U NONE, &tabstopmengevaluasi ke 8. Jadi saya bertukar ini dengan potongan 8 dengan beberapa modifikasi, terima kasih :)
Sapi dukun

13

Mathematica, skor 13

x~D~x
⌊E⌋
3
⌈Pi⌉
5
6
LucasL@4
8
9
0!+0!+0!+0!+0!+0!+0!+0!+0!+0!
77/7
Tr[{11,1}]
-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I-I*I

Anda mungkin harus menghapus karakter spasi yang berlebihan, sepertinya Anda menggunakan kembali karakter itu sebaliknya.
Ørjan Johansen

1
itu bukan masalah. Saya akan menghapusnya.
J42161217

2
"semua karakter harus dikodekan menggunakan satu byte dalam bahasa yang Anda pilih" - Saya khawatir tidak ada pengkodean yang mengkodekan ⌊⌋⌈⌉hal - hal dalam satu byte setiap ...
user202729

Kita dapat menghindari ⌊⌋⌈⌉dengan mengubah ⌊E⌋menjadi Floor@GoldenRatio, ⌈Pi⌉menjadi 4, LucasL@4menjadi 7, dan 77/7menjadi 22/2. Mungkin mungkin untuk melangkah setidaknya satu langkah lebih jauh dengan menerapkan fungsi dengan//
Misha Lavrov

12

05AB1E , Skor 18, 67 byte

X     Variable is initialized to 1
Y     Variable is initialized to 2
2>     2 + 1
4
5
6
7
8
9
T     Constant 10
3b     3 in binary
•C     Ascii code of 'C'
11Ì     11 in hex
A'ok     Index of 'o' in the alphabet
žz¨¤x+     Middle character of '256' times 2, plus itself
¾<<<<n     Variable initialized to 0, 4 times -1, squared
‘c‘‘c‘QDJH     'c' equals itself (true = 1), duplicated, converted from hex to dec
тD÷·±D*·     Constant 100, divided by itself, * 2, bitwise not, times itself, * 2
"d"aÐÐÐÐÐÐÐÐÐ)O     "d" is_alpha (true = 1), triplicated 9 times, total sum

Cobalah online!


13
Jawaban Anda adalah A'ok:)
Okx

Berikut adalah tiga lagi: „((Ç;¬= 20.0(char dua-byte "(("; untuk nilai ordinal; membagi dua; ambil ekor); ₁.²₁P₃/ï= 21(log-2 dari 256; dikalikan dengan 256; dibagi dengan 95; dengan desimal dihapus); ₂Ågttγć= 22(Istilah Lucas ke-26; dua kali kuadrat-berakar; terbelah dalam chuck elemen yang sama; kepala diekstraksi)
.Dua yang

9

Pingpong , skor 127

Di PingPong, setiap karakter memiliki nilai numerik tersendiri yang berbeda, menjadikan penghitungan hingga semua tugas sepele. Bahasa berfungsi dengan membaca nilai setiap karakter dan mendorongnya ke atas tumpukan, tempat semua operasi dilakukan. PingPong secara teoritis dapat melewati 127 tetapi akan membutuhkan melewati blok karakter yang hanya muncul sebagai spasi dalam editor teks jadi saya meninggalkan mereka keluar dari solusi saya.

1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
10: A
11: B
12: C
13: D
14: E
15: F
16: G
17: H
18: I
19: J
20: K
21: L
22: M
23: N
24: O
25: P
26: Q
27: R
28: S
29: T
30: U
31: V
32: W
33: X
34: Y
35: Z
36: a
37: b
38: c
39: d
40: e
41: f
42: g
43: h
44: i
45: j
46: k
47: l
48: m
49: n
50: o
51: p
52: q
53: r
54: s
55: t
56: u
57: v
58: w
59: x
60: y
61: z
62: ©
63: ®
64: À
65: Á
66: Â
67: Ã
68: Ä
69: Å
70: Æ
71: Ç
72: È
73: É
74: Ê
75: Ë
76: Ì
77: Í
78: Î
79: Ï
80: Ð
81: Ñ
82: Ò
83: Ó
84: Ô
85: Õ
86: Ö
87: ×
88: Ø
89: Ù
90: Ú
91: Û
92: Ü
93: Ý
94: Þ
95: ß
96: à
97: á
98: â
99: ã
100: ä
101: å
102: æ
103: ç
104: è
105: é
106: ê
107: ë
108: ì
109: í
110: î
111: ï
112: ð
113: ñ
114: ò
115: ó
116: ô
117: õ
118: ö
119: ÷
120: ø
121: ù
122: ú
123: û
124: ü
125: ý
126: þ
127: ÿ

5
Ok, ini bahkan tidak adil ...: P
MD XF

wow, sepertinya bahasa ini telah dilakukan untuk tantangan ini: D
V. Courtois

TIL tentang bahasa aneh lain :)
roblogic

8

Oktaf, Skor 14, 74 byte

Cukup yakin saya dekat dengan batas sekarang.

1:  ~0                        % Not 0 == 1
2:  "H"/"$"                   % "H" = 72, "$" = 36. H/$ = 2
3:  3                         % Literal
4:  4                         % Literal
5:  5                         % Literal
6:  6                         % Literal
7:  7                         % Literal
8:  8                         % Literal
9:  9                         % Literal
10: ceil(pi*pi)               % pi*pi = 9.87. ceil(9.87) = 10
11: 11                        % Literal
12: 2+2+2+2+2+2               % Well, not much to say
13: ['','RT'-'!']             % 'RT' = [82,84]. Subtract '!' (33) to get ['',49,51]=13
14: nnz...                    % Number of non-zero elements in the string...
    nnnnnnnnnnnnnn            % on this line. (This is an awesome trick by the way!)

Harus menghapus strchrkarena saya sudah punya cnomor 10. Saya masih memiliki j, ^, =, !, ruang dan tab horizontal (ASCII-9) kiri, sehingga mungkin untuk memeras satu lagi di.

Tab horizontal dapat digunakan sebagai spasi, jadi triknya digunakan bersama strchrdan nnzdapat digunakan sekali lagi. Satu-satunya huruf kecil yang tersisa adalah abdfgjkmoquvwxy. Tidak banyak fungsi yang dapat dibuat dari ini. modbisa bekerja, tetapi tidak dapat mengambil input string.

Sangat mudah untuk menggunakan karakter yang tersisa untuk mendapatkan 1, tetapi saya tidak tahu bagaimana saya bisa mendapatkan yang lain.

Tes semua .

Mungkin bermanfaat: fun asama dengan fun('a'), fun a bsama dengan fun('a','b')dan seterusnya. Ini dapat digunakan beberapa tempat:

gt t g    % Equivalent to 't'>'g'. Returns 1. Uses space (available)
or o r    % Equivalent to 'o' | 'r'. Returns 1. 

Menggunakan ini akan membuat 0tersedia, tetapi saya belum melihat bagaimana membuatnya berguna.

e (2.71828...)dan jmasih belum digunakan. Harus menghapus ceiluntuk digunakan e.

Alternatif (inspirasi):

1:  ~0             % Not 0 = 1
2:  2              % Numeral
3:  3              % Numeral
4:  fix(i^i^i^i)   % Numeral
5:  5              % Numeral
6:  6              % Numeral
7:  7              % Numeral
8:  8              % Numeral
9:  9              % Numeral 
10: 1+1+1+1+1+1+1+1+1+1   % Well, not much to explain
11: ['','RR'-'!']  % RR are [82,82] in ASCII, subtract 33 (!) to get
                   % [49,49], and concatenate with the empty string to convert [49,49] to 11 
12: nnz nnnnnnnnnnnn   % Number of non-zero elements in the string containing 12 n
13: "4"/4          % "4" = 52. Divide it by 4 to get 13.

7

JavaScript (ES7), 16 bilangan bulat, 137 130 128 byte

Saya mengambil jawaban @ ETHproductions dan berlari dengannya sebentar; itu sangat berubah sehingga saya mempostingnya secara terpisah. Gagasan dipersilakan. :)

""**""
-~-~{}
3
C=CSS==CSS;C<<C<<C
5
6
7
8
9
++[[]][+[]]+[+[]]
11
4444444444444444444%44
222>>2>>2
`..............i`.indexOf`i`
0XF
atob('MTY')

Tersisa:
$_@#!^&|/?:, ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz

Atau, jika cuplikan untuk 1 diganti dengan !!/!//!!/!/:
$_@#^&|*?:", ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz


JavaScript (ES7), 16 bilangan bulat, 127 byte

Satu byte lebih pendek. : P

""**""
-~-~{}
3
4
5
6
7
C=CSS==CSS;C<<C<<C<<C
9
++[[]][+[]]+[+[]]
11
`............i`.indexOf`i`
222>>2>>2
0XE
atob('MTU')
88888888888888888%88

Tersisa: $_@#!/^&|?:,ABDFGHIJKLNPQRVWYZcghjklmpqrsuvwyz


1
Simpan 7 byte pada 2 dengan -~{}-~{}: P Secara keseluruhan, ini cukup bagus. Jauh lebih pendek daripada punyaku ...
Produk ETH

1
Dan Anda masih memiliki semua yang !&/^|tersisa untuk dikerjakan, cukup mengesankan. Jika perlu, Anda dapat menggunakan !!/!//!!/!/untuk 1 untuk perdagangan !/untuk "*.
ETHproduk

@ EHProduk Hebat!
darrylyeo

1
2 hanya-~-~{}
GOTO 0

10 dapat ditulis +!![]+[+[]], selama tidak ada penggunaan yang lebih baik untuk!
GOTO 0

7

Dyalog APL, skor 15, 89 byte

≡''
≢###
3
4
⍴⍬⍬⍬⍬⍬
6
⌈○2
8
9
1E1
⎕D⍳⊂⎕D











l:l
7--7-×7
(~0 0 0 0 0 0 0 0 0 0 0 0 0 0)⊥~0
5+5+5

Baris baru sebelumnya l:ladalah bagian dari 12.

Spasi di 14 mewakili tab.


1
Saya pikir Anda mungkin menggunakan ruang di 12 dan 14. Bisakah APL menggunakan tab saja?
Ørjan Johansen

@ ØrjanJohansen tidak ada ruang tambahan, tapi saya salah memasukkan garis yang memisahkan cuplikan
Uriel

Maksud saya, karakter spasi sepertinya digunakan dalam dua entri, 12 dan 14.
Ørjan Johansen

@ ØrjanJohansen oh, ya, yang terakhir akan menggunakan tab.
Uriel

@Uriel beberapa ide: 0 0 0-> 0,0,0; ]fromhex f
ngn

7

> <> , skor 20, 93 90 74 65 byte

(3 byte disimpan oleh Teal Pelican, banyak byte disimpan oleh Jo King!)

iii((
2
3
ll{lll{[
5
6
7
8
!   00=0g
a
b
c
d
e
f
44*
'RA'%
999-9--
"&F#",,
1::+:++:+:+

Cobalah mereka di taman bermain ikan! Anda dapat membuat potongan mencetak hasil mereka dengan menambahkan n;ke masing-masing. Perhatikan bahwa cuplikan ke-9 berisi tab, yang dimakan oleh pertukaran tumpukan.

Penjelasan:

  • Dalam iii((, masing-masing imencoba untuk mendapatkan input, tetapi karena tidak ada, mereka mendorong EOF = -1sebagai gantinya. Kemudian (adalah instruksi yang kurang dari itu, dan karena -1tidak kurang dari -1itu, ia mendorong kepalsuan 0; tetapi yang kedua (bertanya apakah -1kurang dari 0, yang mana, sehingga mendorong kebenaran 1.
  • 2dan 3sudah jelas.
  • Sebab ll{lll{[, yang pertama lmendorong panjang tumpukan, yaitu 0, kemudian yang kedua mendorong panjang baru, membawa tumpukan ke 0, 1. The {berputar tumpukan kiri, swapping 1dan 0. Tiga lagi lmembawa tumpukan 1, 0, 2, 3, 4. Kemudian {putar 1ke depan, dan [menyedot 1hal pertama pada tumpukan, yaitu 4.
  • 5, 6, 7Dan 8yang jelas juga.
  • Di !\t00=0g(di mana \tmewakili tab), !lewati tab, lalu 00=dorong dua nol dan periksa apakah mereka sama - mereka ada, jadi kita mendapatkan kebenaran 1. Setelah mendorong yang lain 0, karakter gmendapat di posisi 1,0kode, yang merupakan tab dengan kode karakter 9.
  • amelalui fmasing - masing dorongan 10untuk 15masing - masing (mungkin untuk membuat heksadesimal bagus).
  • 44*mendorong dua 4s dan mengalikannya, untuk16 .
  • 'RA'mendorong kode karakter Rdan A(masing-masing 82 dan 65) ke tumpukan, lalu %menghitung82 mod 65 = 17 .
  • 999-9-- mengevaluasi ke 9 - ((9 - 9) - 9) = 18 .
  • "&F#"mendorong kode karakter &, Fdan #, yang 38, 70dan 35masing - masing. Kemudian ,divisi, jadi kita dapatkan38 / (70 / 35) = 19 .
  • Akhirnya, 1::dorong 1dan duplikat dua kali, +tambahkan dua yang bersamaan untuk mendapatkan 2; :+menduplikasi 2dan menambahkannya ke dirinya sendiri untuk mendapatkan 4; +menambahkan sisa 1untuk mendapatkan 5; kemudian :+:+duplikat dan tambahkan dua kali, menghasilkan 20.

Ini adalah skor maksimum yang dimungkinkan dengan> <>. Setiap potongan harus menyertakan sebuah instruksi di suatu tempat yang ternyata stack kosong ke tumpukan tidak kosong, dan hanya ada 18> <> petunjuk yang bisa melakukan itu (yaitu i, l, dan angka 0–9dan a–f), ditambah modus tali. (Setiap instruksi lain tidak melakukan apa pun pada tumpukan kosong ><v^/\|_#x!{}r,, atau mencoba untuk melontarkan sesuatu dan kesalahan ?.+-*,%=():~$@[]on&gp,.) Memasuki mode string menggunakan salah satu "atau ', sehingga ada 18 + 2 = 20kemungkinan potongan paling banyak .


Jika Anda lebih nyaman dengan yang tidak patut daripada saya, ini dimungkinkan dalam 53 byte, terima kasih kepada Jo King:, di 00=, iii((i-, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 2222***, !Xll$g, 11+::+:+:++, 'Y', "Z"mana X, Ydan Zdiganti dengan karakter dengan kode 17, 19dan 20masing - masing.


1
Ini bagus, saya sudah melihat masalah ini dan tidak bisa melakukan apa pun di dekat ini dengan baik, tetapi saya mempelajari masalah Anda dan bisa sedikit golf; 16 dapat diubah menjadi; iii ((: i $ -: i $ -: i $ - i- dan 1 diubah menjadi; 00 = dan Anda mengurangi kedua baris dengan beberapa byte.
Teal pelican

@Tealpelican, kerja bagus, terima kasih!
Bukan sebatang pohon

1
-23 byte dengan mengubah 2> iii((i-16> 2222***17> berikut lll{lllll{{[{n(mungkin samar, tetapi jika Anda ingin menampilkan sebagai satu angka, setidaknya ada satu yang kurang l) 18>11+::+:+:++
Jo King

@JoKing, wow, itu golf besar! (Saya menggunakan versi 17 yang kurang jelas - sepertinya lebih sesuai dengan aturan.)
Bukan sebatang pohon

1
Bagaimana dengan 17 => di ! ll$gmana ruang diganti oleh karakter kontrol dengan nilai 17 (Kontrol Perangkat 1)?
Jo King

7

MathGolf , 48 51 53 integer, 324 byte

î
ª∞~
c±b±+
φⁿ_¥-
5
6
7
○¢i♀/
d²
♂
A
B
C
D
E
☻
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
♥
U
V
W
X
Y
Z
♫¼¼¼¼
88888]Σ
41
╔½½½½½½½½½½½
π░3§3
22#22#
τ╥└
♦⌡⌡⌡⌡⌡⌡⌡⌡⌡
!⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠
'0$
ÿ@@@@£9
))))))))))))))))))))))))))))))))))))))))))))))))))
►◄╠•╠
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"h 
♣(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((

Skor +2 (dan -2 byte berbeda digunakan untuk 40) berkat @maxb .

Setiap baris adalah program yang terpisah.

Bytes yang digunakan (92 byte berbeda): îª∞~c±b+φⁿ_¥-567○¢i♀/d²♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ♫¼8]Σ41╔½π░3§2#τ╥└♦⌡!⌠'0$ÿ@£9)►◄╠•╠"h ♣(

Penjelasan dan tautan TIO:

MathGolf adalah bahasa golf baru yang berspesialisasi dalam tantangan golf matematika. Ini memiliki banyak builtin byte tunggal untuk angka, menjadikannya tantangan yang sempurna untuk itu.

1) î: Dorong nilai loop terindeks 1, yaitu 1 secara default: Coba online.
2) ª∞~: Push [1]; gandakan ([2]); daftar pop dan dorong isinya ke tumpukan: Coba online.
3) c±b±+: Tekan -2; kemudian muncul dan dorong nilai absolutnya; tekan -1; kemudian muncul dan dorong nilai absolutnya; dan tambahkan bersama-sama Cobalah secara online.
4) φⁿ_¥-: Dorong rasio emas (1.618033988749895); kubus (4.23606797749979); duplikat bagian atas tumpukan; ambil modulo 2 (0.23606797749979); kurangi satu sama lain: Cobalah secara online.
5,6,7) Angka-angka itu sendiri: Cobalah online.
8) Cobalah online. 9) : Tekan -3; kuadrat: Coba online.○¢i♀/ : Dorong 2048; dikonversi ke string heksadesimal (800); dilemparkan ke integer; tekan 100; membagi:
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, 35,36,37,38) Push bawaan untuk angka itu sendiri ( ♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ): Cobalah online.
39) ♫¼¼¼¼: Dorong 10.000; integer-dibagi dengan 4 empat kali: Cobalah online.
40) 88888]Σ: Dorong 8 lima kali; bungkus menjadi daftar; jumlahkan daftar itu: Cobalah secara online.
41) Angka itu sendiri: Cobalah online.
42) ╔½½½½½½½½½½½: Dorong 86400; integer-dibagi dengan 2 sebelas kali: Cobalah online.
43)π░3§3 : Tekan PI (3.141592653589793); dilemparkan ke string; pop dan tekan karakter ketiga yang diindeks 0 (4); tekan 3; Output seluruh tumpukan bergabung bersama secara implisit: 44)Cobalah online. 45) 48)
22#22#: Dorong 2 dua kali; ambil kekuatan keduanya (4); melakukannya lagi; Output seluruh tumpukan bergabung bersama secara implisit: Cobalah secara online. Cobalah online. 49) : Push string ; pop dan dorong panjangnya (4); tekan 9; Output seluruh tumpukan bergabung bersama secara implisit:
τ╥└: Dorong 2 * PI (6.283185307179586); pop dan dorong kekuatan 2 di bawahnya yang paling dekat (4); dorong bagian atas tumpukan + 1 tanpa muncul (5); Output seluruh tumpukan bergabung bersama secara implisit: Cobalah secara online.
46) ♦⌡⌡⌡⌡⌡⌡⌡⌡⌡: Push 64; pengurangan sebanyak 2 sembilan kali: Cobalah online.
47) !⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠: Dorong gamma (n +1) (1 secara default); selisih 2 dua puluh tiga kali :: Dorong nilai ordinal karakter '0': Cobalah online. 51) : Dorong 1.000.000; Dorong 10.000.000; pop keduanya dan integer-bagi mereka satu sama lain (10); tekan 512; pop keduanya dan integer-bagi mereka satu sama lain:
'0$
ÿ@@@@£9"@@@@"Cobalah online.
50) )))))))))))))))))))))))))))))))))))))))))))))))))): Bertambah sebesar 1 lima puluh kali: Cobalah online. Cobalah online.
►◄╠•╠
52) "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"h : Push string "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"; dorong panjangnya (tanpa muncul tali); hapus semuanya dari tumpukan kecuali untuk item terakhir: Coba online.
53) ♣(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((: Push 128; dikurangi 1 tujuh puluh lima kali: Cobalah online.

Akan mencoba menambahkan lagi nanti. Saya masih memiliki beberapa hal berguna yang tersisa, termasuk modulo %dan gandakan *.


Saya sedang mengerjakan solusi untuk ini, tetapi saya macet mencoba mengoptimalkan 1-9. Setelah Anda mencapai 10, itu menjadi sepele untuk mencapai 38. Beberapa hal yang saya perhatikan pada pandangan pertama: 88888ΓΣαΣ-> 88888]Σatau 88888§§§§Σmenghemat 2 perintah dengan biaya menggunakan satu. Anda juga bisa melakukan sesuatu seperti di "xxxxxx"h mana karakter terakhir adalah ruang tanpa putus yang membersihkan semuanya kecuali TOS dan Anda bisa menggunakan panjang string untuk menghasilkan angka. Mungkin menggunakan sesuatu selain dari itu x, karena Anda punya Wxyang memberi Anda selama Anda bisa mendapatkan 35 cara lain.
Maks.

Juga, saya baru saja menambahkan char/ordoperator, yang bekerja seperti 'A$-> 67, dan juga bekerja untuk string yang lebih panjang (jenis seperti basis-256 integer). Ini tidak didokumentasikan dengan sangat baik, tetapi jika Anda tertarik untuk meningkatkan jawaban ini, saya dapat membuat ulang ruang obrolan untuk MathGolf untuk setiap pertanyaan.
Maks.

@ Maxb Saya melihat komentar Anda ketika saya sakit di tempat tidur, tetapi sekarang saya memiliki beberapa waktu untuk meningkatkan jawaban ini. Terima kasih untuk 88888]Σ. Tidak tahu ]. Adapun "hhhhh"h , sepertinya tidak berhasil . : S
Kevin Cruijssen

1
Saya tidak tahu apakah itu dapat disisipkan langsung dari sini, tetapi kode harus diakhiri dengan NBSP, karakter spasi yang tidak melanggar. Perintah itu membersihkan semuanya kecuali bagian atas tumpukan. Saya cukup yakin bahwa PPCG mengubah karakter menjadi ruang biasa di sini di komentar. Coba ini
maxb

Ketika datang ke array, saya mendefinisikannya secara rekursif di MathGolf, dengan [ memulai konteks array dan ]mengakhirinya dan membungkus hasilnya dalam sebuah array. Agar level atas berperilaku seperti level yang lebih rendah, ]membungkus seluruh stack dalam sebuah array sepertinya ide yang bagus.
Maks

6

Java 8, 11 12 13, 39 byte

Java hanya memiliki 10 simbol untuk angka (0-9) dan semua pemanggilan metode dan konstanta memerlukan titik, jadi saya tidak yakin saya bisa mendapatkan di atas 11 output

Rupanya karakter dilemparkan ke bilangan bulat secara default ketika operasi diterapkan

+1 dengan bantuan @ OlivierGrégoire

i->-~i
2
3
4
5
6
7
8
9
'P'^'Z'
11
"::::::::::::"::length
0xD

Penjelasan:

i->-~i

integer lambda yang tidak mengambil input dan mengembalikan 1. Ketika parameter tidak mengambil input nilai default digunakan sesuai dengan meta post di atas, yang untuk integer adalah 0

2
3
4
5
6
7
8
9

bilangan bulat literal

'P'^'Z'

XOR dua karakter untuk mengembalikan 10

11

integer literal

":::::::::::"::length

ekspresi lambda yang mengembalikan panjang string 12 karakter

0xD

Heksadesimal 13

TIO Link jika Anda ingin memverifikasi.


1
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Dennis

Untuk mempersingkat jumlah byte (-6 karakter), 2dapat ditulis sebagai 2dan 10sebagai 'P'^'Z'. Juga, ini membebaskan karakter X+*dan penggunaan P.
Olivier Grégoire


Ini jawaban yang lebih upvoted tidak setuju dengan Anda.
Olivier Grégoire

Juga, ini adalah pertama kalinya saya melihat "persyaratan" ini dalam setahun di situs web ini dan tidak ada yang tidak setuju dengan golf saya ketika lambda digunakan.
Olivier Grégoire

6

Gaia , skor 25, 203 byte

§‼
..⌉+⌉
₵P~~
4
5
6
∂Ql
8
9
¶c
11
'¡ċ⌋u⌋
--⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻
7:,Σ
Ø!))))))))))))))
øøw<øøw<«øøw<«øøw<«øøw<«
⟩‘
₸ḣ₸K$₸ḣ₸/S₸₸/=$
]]]]]]]]]]]]]]]]]]]n
⇑’e
0(((((((((((((((((((((_
22
“B”“↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B”B
3₈×
ℍḥḥ

Saya menganggap ini skor sempurna, karena tidak ada lagi nilad yang dapat digunakan mengingat keterbatasan karakter.

Penjelasan

1. §‼

§adalah karakter antariksa, dipaksakan ke boolean, jadi hasilnya adalah 1.

2. ..⌉+⌉

.adalah jalan pintas untuk 0.5, jadi ini ceil(0.5+ceil(0.5)).

3. ₵P~~

₵P adalah pi, ~ adalah negasi bitwise. Negasi bitwise ganda hanyalah pemotongan.

4. 4

5. 5

6. 6

7. ∂Ql

∂Q adalah daftar yang berisi nama-nama hari dalam seminggu, l panjangnya.

8. 8

9. 9

10. ¶c

Titik kode clinefeed .

11. 11

12. '¡ċ⌋u⌋

'¡  The string "¡"
ċ   Turn it into a list of code points: [161]
⌋   Minimum: 161
u⌋  Floored square root: 12

13. --⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻

-adalah singkatan untuk -1, adalah pengurangan. Jadi ini-1 - -1 - -1... cukup untuk menghasilkan 13.

14. 7:,Σ

Dorong 7, duplikat :, pasangkan ,kedua angka 7 ke dalam daftar, dan jumlahkanΣ .

15. Ø!))))))))))))))

Øadalah string kosong, demikian Ø!juga 1. Penambahan) 1 14 kali.

16. øøw<øøw<«øøw<«øøw<«øøw<«

øø    Push two empty lists
w     Wrap one of them
<     [] < [[]]? (it is, so push 1)
øøw<  Do the same thing again to push another 1
«     Bitshift 1 left by 1
      Do that same thing again 3 more times to get 16

17. ⟩‘

Menutup string dengan membuatnya menjadi basis-250 angka literal.berada pada nilai byte 17 di halaman kode Gaia.

18. ₸ḣ₸K$₸ḣ₸/S₸₸/=$

₸     10
ḣ     doubled
₸     10
K     20 choose 10 (184756)
$     Digit list
₸ḣ₸/  20/10 (2)
S     Split the digit list at index 2 ([[1 8][4 7 5 6]])
₸₸/   10/10 (1)
=     Get the first element of that split ([1 8])
$     Join together and print 18

19. ]]]]]]]]]]]]]]]]]]]n

Setiap ]membungkus tumpukan dalam daftar. Lakukan ini 19 kali dan dapatkan kedalamannyan daftar.

20. ⇑’e

Menutup string dengan membuatnya menjadi daftar poin kode codepage. emembuang daftar di tumpukan.memiliki titik kode 20 dalam codepage.

21 0(((((((((((((((((((((_

Penurunan (0 21 kali, lalu negasikan _.

22. 22

23. “B”“↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B”B

Konversikan string “B”dari basis-24, di mana angka 0-23 berada ↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B. Hasilnya adalah 23.

24. 3₈×

3 × 8.

25. ℍḥḥ

100 dibelah dua , dan dibelah dua lagi.


5

C, skor 13

Ini hanya sekelompok konstanta bilangan bulat.

0==0
__LINE__
3
4
5
6
7
8
9
1+1+1+1+1+1+1+1+1+1
'o'/'.' 
2*2*2*2-2-2
strlen("strlenstrlens")
  1. 0==0dievaluasi menjadi 1
  2. Asumsikan kode ada pada baris 2. __LINE__= 2
  3. Konstanta bilangan bulat
  4. Konstanta bilangan bulat
  5. Konstanta bilangan bulat
  6. Konstanta bilangan bulat
  7. Konstanta bilangan bulat
  8. Konstanta bilangan bulat
  9. Konstanta bilangan bulat
  10. 1+1+1...= 1*10= 10
  11. 'o'adalah 111, '.'mewakili ASCII 0x10 yang tidak dicetak. 111/10 = 11
  12. (2<<2)= 8, 8*2= 16, 16-2-2= 12
  13. panjang string "strlenstrlens"= 13

5

Ohm , skor 21 22, 160 total byte

╓S@Ri
ΓΓ-Γ-Γ-
αê⌠
¡¡¡¡¼
5
▀lll▀l
ÑÑÑÑÑÑÑÿWÿk
ü`½½
9
..≥°
$$J
3dd
7ƒ
2≡≡≡Σ
║F
4º
0ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~
6DD++
8π
τ╛hτ*
"≤"≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤A
1111 11v11%L1111 11v11%L

Cobalah online!

Penjelasan

1. ╓S@Ri

Tekan detik dari tanggal / waktu saat ini ( ╓S). Dapatkan rentang inklusif dari 1 hingga detik ( @), balikkan ( R), dapatkan elemen terakhir (i ), yang selalu 1.

2. ΓΓ-Γ-Γ-

Γ adalah -1, jadi ini adalah (-1) - (-1) - (-1) - (-1), yaitu 2.

3. αê⌠

αêadalah nomor Euler (2.71828 ...), adalah plafon. 3 adalah hasilnya.

4. ¡¡¡¡¼

¡menambah penghitung, ¼mendorong penghitung.

5. 5

Hanya literal.

6. ▀lll▀l

▀lll▀adalah string literal terkompresi yang setara dengan "of >ic". lbutuh waktu lama, jadi hasilnya 6.

7. ÑÑÑÑÑÑÑÿWÿk

Pertama kita dorong 7 karakter baris baru ( Ñ) dan kemudian string kosong ( ÿ). Tumpukan dibungkus dalam array ( W), dan kemudian indeks dari string kosong dalam array tersebut ditemukan.

8. ü`½½

üadalah karakter ruang. `mendorong nilai ASCII (32), lalu terbagi dua dua kali ( ½½).

9. 9

Hanya literal.

10. ..≥°

..adalah .karakter literal . Itu bertambah ( ), yang mem-parsing string sebagai angka, default ke 0 karena itu bukan angka yang valid, dan menambahkannya ke 1. Kemudian kita menghitung 10 1 (° ).

11. $$J

$ mendorong nilai register saat ini, awalnya 1. Jadi, tekan 1 dua kali, gabungkan tumpukan dan cetak.

12. 3dd

Tekan 3 dan gandakan dua kali.

13.

Menekan angka Fibonacci 7.

14. 2≡≡≡Σ

Tekan 2, rangkap tiga tiga kali, meninggalkan 7 2 di tumpukan. Kemudian ambil jumlah tumpukan ( Σ).

15. ║F

adalah pembatas untuk base-220 number literals. Karena ini adalah di akhir baris, itu tidak perlu diakhiri.

16.

Hitung 2 4 .

17. 0ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~

òbitate negate, ~adalah aratemetic negate. Menggabungkan operator-operator ini, kita dapat meningkatkan 0 17 kali.

18. 6DD++

Tekan 6, duplikat dua kali, dan hitung 6 + 6 + 6.

19.

Tekan bilangan prima 8.

20. τ╛hτ*

Tekan 10 ( τ), dapatkan elemen pertama ( h) dari faktor prima ( ), kalikan dengan 10.

21 "≤"≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤A

Demikian pula dengan cuplikan sebelumnya, string "≤"diurai menjadi 0. Kami menurunkannya 21 kali, lalu mengambil nilai absolut.

22. 1111 11v11%L1111 11v11%L

Di sini kita menghitung 1111 div 11 mod 11, yaitu 2, lalu cetak 2. Kemudian lakukan lagi.


5

PowerShell, skor 12, 91 byte. 14, 176 byte

[byte]!![byte]                    # type gets cast to bool false, inverted, to int = 1
-   -$?-shl$?                   # -bool true is -1, shift left, negative. (Tab not space)
3
4
5
6
7
8
9
1+1+1+1+1+1+1+1+1+1
22/2                                           # use the 2
'uuuuuuuuuuuu'.LENGTH                          # string length
0xd
@{z=@{};Y=@{};YY=@{};w=@{};v=@{};U=@{};zz=@{};S=@{};r=@{};q=@{};p=@{};J=@{};K=@{};m=@{}}|% COU*             # count items in hashtable (space)

Sunting:

  • Terima kasih kepada Ørjan Johansen karena menyarankan hex 0xd literal untuk 13 dan mengatur ulang 5 untuk membebaskan 1 + 1 + 1 + 1 .. sebagai pilihan.
  • Mengubah panjang array menjadi panjang string, [int] ke [byte] dan hashtable untuk menggunakan hashtables sebagai nilai, membebaskan (),""Pondering 15 dengan sesuatu seperti "ZZZZZZZZZZZZZZZA".InDeXof("A")tetapi tidak bisa menggunakan kembali titik atau 'e' ..

PowerShell tidak dapat melakukan variabel tanpa $, tidak bisa melakukan eksponensial, bit shifting, Pi, ceil (), dll. Dengan simbol-simbol dasar, dan sebagian besar mengetik koercian ke / dari bool dan ke / dari angka-sebagai-string, jadi ada ruang yang relatif kecil untuk menghasilkan angka sintaksis rendah.


Anda belum menggunakannya 0, jadi 13 bisa 0xd. Anda dapat meletakkannya 5di tempat normalnya, membebaskan +untuk menggabungkan 1. Itu seharusnya membuat Anda mencapai 14. Jika Anda perlu menyimpan karakter, kunci hashtable bisa lebih dari satu huruf. Dan jika Anda memiliki cara luang untuk mendapatkan jumlah penjumlahan, Anda dapat melakukan 10= 1e1.
Ørjan Johansen

@ ØrjanJohansen - ide bagus, terima kasih, edit jawaban saya bersama mereka
TessellatingHeckler

Saya menemukan cara berbeda dalam melakukan 2: ""-(""-(""-lt(""-""))-(""-lt(""-""))). Itu membebaskan $?untuk menjumlahkan, dan kemudian Anda dapat melakukan 1e1hal yang saya sarankan.
Ørjan Johansen

Um tunggu tbentrokan dengan kedua versi 1. (""-eq"")-(""-(""-eq""))tampaknya lebih baik, qdi hashtable mudah diganti.
Ørjan Johansen

5

TI-Basic (83 series), skor 21 22 23 24 25 (1003 bytes)

1:  A=A
2:  int(tan(tan(cos(cos(cos(B
3:  tanh⁻¹(√(√(√(√(√(√(√(√(√(√(C!°√(√(C!°
        √(√(√(√(√(√(C!°√(√(√(√(√(√(C!°√(
        C!°√(√(√(C!°√(C!°√(C!°√(√(√(√(√(
        √(C!°√(C!°√(C!°√(C!°
4:  4
5:  cosh(sinh⁻¹(cosh(sinh⁻¹(...sinh⁻¹(cosh(D    with 25 repetitions of cosh(
6:  6
7:  7
8:  8
9:  9
10: ₁₀^(₁₀^(E
11: 11
12: F nPr F/sin(tan⁻¹(...(sin(tan⁻¹(F nPr F     with 143 repetitions of sin(tan⁻¹(
13: det([[G≤G]...[G≤G]]ᵀ[[G≤G]...[G≤G           with 26 repetitions of G≤G
14: ln(tanh(not(H))...tanh(not(H)))
        ln(tanh(not(H)))^⁻not(H                 with 14+1 repetitions of tanh(not(H))
15: iPart(e^(e^(e^(I
16: sum(dim(identity(sum(dim(identity(sum(
        dim(identity(sum(dim(identity(J≥J
17: K nCr K+K nCr K+...+K nCr K                 with 17 repetitions of K nCr K
18: abs(i-i-...-i                               with 20 repetitions of i
19: rand→L:log(LL...LL→M:log(L→N:N⁻¹M           with 19 L's inside the log
20: mean(seq(OOO,O,O,sinh(sinh(cos⁻¹(O
21: ππ³√(π³√(ππ³√(ππ³√(ππ³√(π³√(³√(ππ³√(π³
        √(π³√(ππ³√(π³√(ππ³√(ππ³√(ππ³√(π³√(
        π³√(³√(ππ³√(ππ
22: 22
23: 3(3(3×√(3(3(3×√(3(3×√(3(3(3×√(3×√(3×√(
        3(3×√(3(3×√(3(3(3×√(3(3×√(3×√(3(3(
        3×√(3(3×√(3×√(3×√(3(3(3×√(3(3×√(3(
        3(3×√(3×√(3(3(3×√3
24: Fix 0
    sin⁻¹(ᴇ0
    AnsAnsAnsAnsAnsAnsAns
25: 5*5

Lihat http://tibasicdev.wikidot.com/one-byte-tokens untuk daftar hal-hal yang menjadi tantangan dan tidak diizinkan di sini.

Semua ini dapat berupa program yang lengkap, karena baris terakhir suatu program akan dicetak secara otomatis. Tapi (kecuali 17, yang panjangnya beberapa baris), mereka juga bisa menjadi cuplikan di layar beranda.

Pada titik ini, saya tidak melihat cara lain untuk mendapatkan setiap nilai nol dari token yang tersisa tersedia. Jika ada perbaikan yang harus dilakukan, itu harus melibatkan terlebih dahulu membuat beberapa solusi di atas yang lebih konservatif.

Penjelasan

  • A=Aadalah boolean 1 karena variabelnya Asama dengan dirinya sendiri.
  • Badalah 0 secara default, tan(tan(cos(cos(cos(Bsekitar 2.21, dan kemudian kita mengambil lantai.
  • C!°adalah 1 derajat dalam radian, sekitar 0,017. Beberapa kekuatan positif dari ini adalah tanh (2), sekitar 0,964. Kami menyandikan kekuatan itu dalam biner menggunakan perkalian tersirat dan √(, dan kemudian ambiltanh⁻¹( .
  • 4 sangat mudah
  • cosh(sinh⁻¹(X disederhanakan menjadi 1+X2, dan digunakan 25 kali itu memberi kita 5.
  • 6-9 mudah
  • ₁₀^( adalah built-in satu byte untuk kekuatan 10, dan 10 ^ 10 ^ 0 = 10 ^ 1 = 10.
  • 11 adalah 11.
  • Contoh lain dari trik yang digunakan pada 5. F nPr Fadalah 1. sin(tan⁻¹(Xdisederhanakan11+1/X2, dan digunakan 143 kali dimulai dengan 1 memberi kita 1/12. Membagi 1 dengan nomor ini adalah 12.
  • G≤Gadalah 1, demikian [[G≤G]...[G≤G]]juga vektor kolom 13x1. Mengambil produk dari transposnya dengan sendirinya memberikan matriks [[13]], yang determinannya adalah 13.
  • not(H)adalah 1. tanh(not(H))hanya beberapa angka yang tidak sama dengan 0 atau 1, dan ln(XXX....X)ln(X)^⁻1akan menyederhanakan ke jumlah X's di log pertama asalkan Xbukan 0 (sehingga log ada) dan bukan 1 (sehingga kita tidak membagi oleh 0).
  • e^(e^(e^(F mengevaluasi menjadi sekitar 15,15, dan kemudian kita naik ke lantai.
  • J≥Jadalah 1. identity(membangun matriks identitas 1x1, dim(menemukan dimensi baris dan kolomnya, dan sum(menambahkannya untuk mendapatkan 2. Kemudian kita melakukan ini lagi, menambahkan dimensi matriks 2x2 untuk mendapatkan 4, dan sekali lagi, menambahkan dimensi matriks 4x4 untuk mendapatkan 8, dan sekali lagi, menambahkan dimensi dari matriks 8x8 untuk mendapatkan 16.
  • K nCr K adalah koefisien binomial 0 pilih 0, atau 1. Menambahkan bersama 17 1 menghasilkan 17.
  • i-i-...-imenyederhanakan ⁻18i, dan menerima abs(memberi 18.
  • rand→Lmenyimpan bilangan real acak ke L, tetapi kami tidak peduli apa itu. Kami menghitung log(L)⁻¹log(L^19), yang menyederhanakan menjadi 19.
  • sinh(sinh(cos⁻¹(Isedikit lebih dari 4, jadi seq(III,I,I,sinh(sinh(cos⁻¹(Iberikan daftar {0 1 8 27 64}yang rata-rata aritmatika adalah 20.
  • Contoh lain dari trik yang digunakan untuk mendapatkan 3. Di sini, beberapa kekuatan πharus memberi 21; kami menyandikan kekuatan itu di ternary menggunakan multiplikasi tersirat dan³√( .
  • 22 adalah 22.
  • Contoh lain dari trik yang digunakan untuk mendapatkan 3 dan 21. Kami menyandikan kekuatan 3 yang sama dengan 23 di ternary, menggunakan 3×√(sebagai root cube dan (untuk perkalian.
  • Fix 0adalah pengaturan untuk menampilkan 0 digit setelah desimal, membulatkan semua nilai menjadi bilangan bulat. sin⁻¹(ᴇ0mengevaluasi ke π / 2, dan π / 2 dikalikan dengan sendirinya 7 kali memberi sekitar 23,59, yang menjadi 24.
  • 5*5adalah 25. (Akan lebih konservatif untuk menggunakan 5untuk mendapatkan 5, dan mengadaptasi solusi yang digunakan di sana untuk 25. Tetapi cara ini menghemat banyak ruang, dan *bukan karakter yang sangat berguna karena ada multiplikasi tersirat.)

Xmax adalah 10 secara default, sama dengan Ymax = 10, Ymin = Xmin = -10 dan beberapa nilai default lainnya.
lirtosiast

@ lirtosiast Semua ini adalah dua byte.
Misha Lavrov

Saya tidak yakin tentang interpretasi aturan, tapi saya pikir Anda masih bisa menggunakan salah satu dari mereka tanpa mengulangi byte (mempertimbangkan karakter sebagai byte daripada token)
lirtosiast

Saya agak skeptis tentang interpretasi itu. Bagaimanapun, menghitung karakter sebagai byte, itu harus berupa sesuatu seperti Xfact = 4, karena Xmax bertentangan dengan °. Kita mungkin bisa mendapatkan satu poin dari itu, satu lagi poin dari perintah 2-byte, dan poin ketiga dari perintah TI-84 saja.
Misha Lavrov

4

SOGL , skor 16 18 20, 109 byte, 47 karakter digunakan

=                    push ""=""
ρ:¾/U                ceil(isPalindrome("")/(isPalindrome("")*(3/4))) -> ceil(1/(3/4)) -> ceil(4/3)
3                    push 3
MM¼÷                 100/(100*1/4)
æ⁄                   length of "aeiou"
6                    push 6
7                    push 7
Nτ                   log2(256)
9                    push 9
L                    push 10
⁹’                   byte with the 11th SOGL code point
Ιζrkk"⁸              `⁸`s UTF-8 codepoint to string, take off 1st 2 chars
'⁰                   messy compression
īuHHHHHHHHHHHHHH±    floor(0.1) `-1` 14 times, then change sign
aIIIIIIIIIIIIIII     A `+1` 15 times, A = 0
4²                   4^2
lllllllllllllllll”l  length of "lllllllllllllllll"
222222222++++++++    2+2+2+2+2+2+2+2+2
δ“○“-                429-420
Μ℮‘                  compressed string of "2ŗ" where ŗ defaults to 0

4

Brachylog , 16 bilangan bulat, 86 byte

1
2
3
4
5
6
7
8
9
ℕ<<<<<<<<<<
≜+₁₁
Ịbkkkkkkkị
Ḥl
ℤ₇×₂ṅ
"____**"pᶜ¹
⟦h>>>>>>>>>>>>>>>>ȧ

Cobalah online!(Input mengontrol program mana yang dijalankan, dari 1 hingga N)

Penjelasan

                       The output is...

1                      1
2                      2
3                      3
4                      4
5                      5
6                      6
7                      7
8                      8
9                      9
ℕ<<<<<<<<<<            Strictly bigger than ... strictly bigger than 0
≜+₁₁                   0 + 11
Ịbkkkkkkkị             "12" converted to an integer
Ḥl                     The length of "Hello, World!"
ℤ₇×₂ṅ                  -(-7 × 2)
"____**"pᶜ¹            The number of unique permutations of "____**"
⟦h>>>>>>>>>>>>>>>>ȧ    The absolute value of stricly less than ... stricly less than 0

1
Pikirkan saja tentang Prolog: 1, karena Anda selalu membutuhkan titik di bagian akhir.
false

4

Jelly , skor 22, 177 byte

1: Ṇ  : logical NOT. When there is no input, 0 is assumed, so this returns NOT(0)=1
2: ~A~A  : ~ is bitwise NOT and A is absolute value, implicit 0 input
         : 0~ = -1;   0~A = 1;   0~A~ = -2;  0~A~A = 2.
3: 3  : literal 3
4: -ı-²²×-Ḟ:
   -ı-     : literal complex number -1-1j
   ²²×-    : square (2j), then square(-4), then multiply by (×) negative 1 (-) to get 4+0i
   Ḟ       : get the real component, which is 4
5: 5  : literal 5
6: 6  : literal 6
7: 7  : literal 7
8: 8  : literal 8
9: ØDṪ : tail(Ṫ) of list of digits (ØD) to return 9
10: ⁵  : literal 10
11: 11 : literal 11
12: CNCNCNCNCNCNCNCNCNCNCNC : again, 0 is taken as input because there is no input
                            : C is complement and N is negate
                            : so each NC returns 1-(-n)=n+1 and is equivalent to increment, returning 12
13: “>>>>>»L    : encodes "#GlomAbducens" with “>>>>>» then returns the length in characters (13) with L
14: ‘‘‘‘‘‘‘‘‘‘‘‘‘‘   : default input is 0 again, and each ‘ increments it to get 14
15: Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;Ị;ỊS : default input is 0 again.
                                   : each Ị returns abs(0)<1 = 1
                                   : these are concatenated together with ; then summed with S to get 15
16: ⁴  : builtin literal 16
17: ,,,,,,,,,,,,,,,,,ŒḂŒḊ : Each , is the pair dyad: x,y = [x,y] and x,[y,z] = [x,[y,z]]. 
                          : Thus each , increased the depth by 1, then ŒḊ returns the depth: 17
18: 9Ḥ : 9 doubled = 18
19: E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E+E : each E returns areallelementsidentical([0]) = 1
                                          : 19 of these are summed with +
20: 44440b44ạ/ : 44440 base 44 = [22,42,0].
               : ạ/ takes the absolute difference of terms: ||22-42|-0| = 20
21: ”TOHH : ”T is the character literal "T". OHH returns its ascii value 84 (O) halved twice (HH) = 21
22: literal 22

Coba sekaligus atau Coba satu per satu (argumen adalah output mana yang Anda inginkan).

Karakter yang tidak digunakan:

¡¢£¤¥¦©¬®µ½¿€ÆÇÐÑÞßæçðȷñ÷øœþ !"#$%&'()*.:<=?@BFGIJKMPQRUVWXYZ[\]^_`acdefghijklmnopqrstuvwxyz{|}¶°¹³⁶⁷⁸⁹⁺⁻⁼⁽⁾ƁƇƊƑƓƘⱮƝƤƬƲȤɓƈɗƒɠɦƙɱɲƥʠɼʂƭʋȥẠḄḌẸḲḶṂỌṚṢṬỤṾẈỴẒȦĊĖḞĠḢİĿṀṄȮṖṘṠẆẊẎŻḅḍẹḥịḳḷṃṇọṛṣṭụṿẉỵẓȧḃċḋėḟġḣŀṁṅȯṗṙṡṫẇẋẏż«’

Anda menggunakan Akeduanya 2 dan 4 , bukan?
Dennis

@Dennis TIO saya sudah benar, tetapi penjelasan saya berbeda. Diperbaiki
fireflame241

1
Saya melihat. Btw jika Anda memasukkan 22¹£€Ytautan utama, Anda dapat menjalankan semua snippet sekaligus. tio.run/##y0rNyan8///hzjauOsc6Ry5jLt0jG3UPbTq0icuUy4zLnMuC6/…
Dennis

4

Reng, skor 40, 149 byte

Coba di sini!

1.  e
2.  2
3.  ::l
4.  4
5.  5
6.  i`i`i`i`i`i`+++++
7.  7
8.  8
9.  9
10. A
11. ÇÇÇǹ
12. C
13* [[[[[[[[[[[[[mn~
14. E
15. F
16. G
17. H
18. I
19. J
20. K
21. L
22. M
23. N
24. O
25. P
26. Q
27. R
28. S
29. T
30. U
31. V
32. W
33. X
34. Y
35. Z
36. 6²
37. "%"
38* &fæ¦
39. D3*
40. 11±$1±±±±±±±±$11±$1±±±±$±$

Semua huruf besar adalah angka, jadi itu bagus. Semua kecuali dua di antaranya adalah cuplikan. Dua yang merupakan program:

13. [[[[[[[[[[[[[mn~
38. &fæ¦

Tautan yang disediakan memungkinkan seseorang untuk melihat tumpukan saat berjalan. Saya akan menulis penjelasan nanti.


4

CJam, skor 27, 168 byte

1-3: X , Y,Z

Variabel X,, Ydan Zdiinisialisasi ke 1, 2, dan 3, masing-masing.

4: ",,,,",

Dorong senar ,,,,dan ambil panjangnya.

5-9: 5 , 6, 7, 8,9

Numerik literal.

10-20 : A-K

Variabel yang diinisialisasi.

21: U)))))))))))))))))))))

Variabel Udiinisialisasi ke 0. Dorong Udan tambah 22 kali.

22: 22

Numerik literal.

23: ';(((((((((';((((((((

Dorong karakter ;dan kurangi 9 kali untuk mendapatkan 2, lalu dorong ;lagi dan kurangi 8 kali untuk mendapatkan3 .

24: 4m!

Ambil faktorial 4.

25: TT=TT=+TT=TT=TT=TT=TT=++++

TT=mendorong 1. Kode ini setara dengan 1 1+1 1 1 1 1++++.

26: N:i~W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-

Nmendorong string yang berisi baris baru. :imengubahnya menjadi daftar kode karakter, menghasilkan [10]. ~membukanya, memberi 10. W-adalah setara dengan menambahkan satu. Bertambah 10 enam belas kali memberi 26.

27: LLLLLLLLLLLLLLLLLLLLLLLLLLL0]0#

Temukan indeks 0 dalam daftar di mana 0 berada di indeks ke-27.

Karakter masih tersedia: $%&*./1<>?@MOPQRSV[\^_`abcdefghjklmnopqrstuvwxyz{|}

Beberapa catatan untuk ekspansi potensial:

  • Saya mungkin harus mengubah 10-20 untuk menggunakan variabel untuk sesuatu yang lain. Jika saya mendapatkan angka lebih tinggi dari 1, saya bisa menggunakan* (dan mungkin operator bitwise, tapi saya pikir mereka tidak akan banyak membantu).

  • Saya masih punya S, apa pun kebaikan yang akan membantu saya.

  • Jika saya mengubah 26 menjadi N{}/iW-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-, maka :akan tersedia.

  • Saya dapat mendorong beberapa daftar kosong dan mendapatkan lebih banyak nol dengan variabel yang ada. Saya juga bisa mendapatkan π, tapi itu sepertinya tidak terlalu berguna kecuali saya bisa melemparkannya ke integer, dan m(untuk m[) dan isudah diambil.

  • Dalam hal manipulasi array, saya dapat:

    • Gunakan peta dengan % atauf
    • Gunakan lipatan dengan *
    • Lakukan beberapa operasi setwise
    • Konversi basis (ini tampaknya menjanjikan, tetapi saya tidak tahu bagaimana saya akan mendapatkan nomor basis)
    • Bangun array dengan menggunakan |:M1|2|3|

Hanya sebuah catatan, Anda dapat membuat 21 menjadi U)))))))))))))))))))))dan 22 menjadi 22yang akan gratis 1untuk potongan nanti.
Business Cat

@BusinessCat Terima kasih, diedit.
Buah Esolanging

Untuk mengonversi pi menjadi bilangan bulat, Anda dapat menggunakan fakta bahwa konversi basis melakukan implisit :ipada daftar digit (misalnya [P]1bmemberi 3).
Martin Ender

Jika Anda tidak keberatan membuat 23 a banyak lagi Anda bisa menggunakan ''bukannya ';dan kemudian cukup gunakan (untuk membungkus sekitar untuk angka (jadi sekitar 65k (untuk setiap digit). Itu akan membebaskan ;untuk hal lain, tetapi saya tidak yakin seberapa berguna itu.
Martin Ender

@ MartinEnder saya akan melakukan itu jika saya melihat ada gunanya ;, tetapi saat ini saya tidak bisa.
Buah Esolanging

4

Haskell , skor 13, 86 byte

pi/pi
sum[sum[]^sum[],sum[]^sum[]]
3
4
5
6
7
8
9
length"eeeeeeeeee"
11
2+2+2+2+2+2
0xD

Cobalah online!

Terima kasih kepada Ørjan Johansen karena menemukan cara untuk memperbaiki surat saya tumpang tindih sambil menjaga skor tiga belas. (Juga untuk keluar dari jalan mereka untuk memberi tahu saya tentang ini sementara jawaban ini dihapus.)

pi/piadalah 1.0.
sum[]mengevaluasi ke 0, 0^0ke 1dan sum[1,1]ke 2. 3untuk 9hanya memecahkan kode diri mereka sendiri.
length"eeeeeeeeee"menghasilkan panjang string, yaitu 10.
2+2+2+2+2+2adalah 12.
0xDheksadesimal untuk 13.


Anda memiliki beberapa surat yang tumpang tindih.
xnor

@ xnor Terima kasih telah menunjukkan. Harus diperbaiki sekarang.
Laikoni
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.