pengantar
Tantangan Anda hari ini (terinspirasi oleh tantangan ini ) adalah menulis sejumlah cuplikan, fungsi, atau program lengkap yang menghasilkan berbagai emotikon ascii, tanpa menggunakan kembali karakter.
Tantangan
Daftar emotikon ascii yang valid untuk tantangan ini ada di sini dan di blok kode di bagian bawah posting ini.
Setiap cuplikan harus pada baris terpisah dalam kiriman Anda.
Anda hanya dapat menggunakan satu bahasa untuk semua cuplikan.
Setiap potongan harus menghasilkan stdout atau mengembalikan string yang berisi emotikon dan baris baru tambahan opsional, dan tidak ada yang lain .
Anda tidak boleh menggunakan karakter apa pun lebih dari sekali di semua cuplikan, namun menggunakan karakter beberapa kali dalam satu cuplikan tidak masalah.
Anda tidak boleh menggunakan karakter apa pun yang tidak ada dalam codepage bahasa Anda (atau ascii, jika bahasa Anda tidak menggunakan codepage khusus) di salah satu cuplikan. Dengan kata lain, Anda dibatasi hanya karakter yang dapat dikodekan dalam satu byte.
Tidak ada cuplikan yang dapat menerima input apa pun.
Celah standar tidak diijinkan.
Skor Anda adalah jumlah cuplikan unik yang masing-masing mencetak emotikon ascii berbeda dalam file teks di atas.
Kemenangan skor tertinggi!
Semoga berhasil!
Emoticon yang diizinkan, dipisahkan oleh ruang:
:-) :) :-] :] :-3 :3 :-> :> 8-) 8) :-} :} :o) :c) :^) =] =) :-D :D 8-D 8D x-D xD X-D XD =D =3 B^D :-)) :-( :( :-c :c :-< :< :-[ :[ :-|| >:[ :{ :@ >:( :'-( :'( :'-) :') D-': D:< D: D8 D; D= DX :-O :O :-o :o :-0 8-0 >:O :-* :* ;-) ;) *-) *) ;-] ;] ;^) :-, ;D :-P :P X-P XP x-p xp :-p :p :-b :b d: =p >:P :-/ :/ :-. >:\ >:/ :\ =/ =\ :L =L :S :-| :| :$ :-X :X :-# :# :-& :& O:-) O:) 0:-3 0:3 0:-) 0:) 0;^) >:-) >:) }:-) }:) 3:-) 3:) >;) |;-) |-O :-J #-) %-) %) :-###.. :###.. <:-| ',:-| ',:-l <_< >_>
EDIT: Maaf, ada karakter Unicode di salah satu emotikon yang saya lewatkan. Sejak itu saya menghapus emotikon yang mengandungnya. Saya harap itu tidak akan menyebabkan terlalu banyak ketidaknyamanan.
sumber
Jawaban:
Bahasa , 131
Saya telah meletakkan semua emotikon yang saya wakili dalam format di
<emoticon> <byte> <length>
mana program ini<byte>
diulang berkali-<length>
kali.sumber
×
!Haskell , 3
Ini adalah awal dari solusi haskell.
xD
Cobalah online!
Yang ini hanyalah string biasa yang menggunakan karakter
"xD
:]
Cobalah online!
Ini adalah string yang diinginkan menggunakan kontra untuk membangun daftar karakter. Ia menggunakan emoticon
:]
karena keduanya:
dan]
sudah digunakan. Secara total ini menggunakan karakter':][
.8)
Cobalah online!
Di sinilah segalanya mulai menjadi sedikit lebih menarik. Karena kita memerlukan cara untuk membuat string tanpa karakter
"
atau'
kita menggunakanshow
fungsinya.show
mengambil sesuatu yang bisa ditampilkan dan membuat string darinya. Di sini kami tunjukkan tuple(88,8,8,8)
. Ini di tuple pada akhirnya berakhir dengan8)
, string yang kita inginkan, jadi kita lepaskan8
pemburu pertama dari string menggunakandrop 8
. Karakter unik dalam solusi ini adalahdrop 8(shw,)
Jika kita dapat menemukan cara lain untuk membuat
Char
saya mungkin akan dapat membuat 4.mempty
, dapat digunakan sebagai ganti[]
jawaban 2, dan ada cara mengekstraksi,
dari jawaban 3.sumber
chr
dariData.Char
, mengubah setiap char menjadi string dengan:[]
dan kemudian++
mereka semua bersama-sama.Arang, 10
Ini hanya yang bisa saya lakukan tanpa menggunakan
cat
kemampuan seperti Arang , yang akan memungkinkan saya untuk menambahXP
dan|-0
.Cobalah secara online! Saya telah menambahkan
D⎚
perintah untuk memisahkan snipet yang memisahkannya, meskipun tidak sempurna, karena kode harus benar-benar berada pada satu baris. Penjelasan:The
←
menyebabkan literal string yang)%
leftwards yang akan dicetak yaitu terbalik.Kode karakter untuk
:
adalah 58. Kode characer(
adalah 5 kali 8. (Keduanya dinegasikan di sini jika saya membutuhkan pemisah nanti.)Ini
:
adalah literal. The¹
mencetak garis panjang 1 horizontal, yang hanya-
. The↓
menyebabkan baris kedua yang akan dicetak secara vertikal, yang memberikan|
.The
⮌
membalikkan literal string yang];
.Ini
<_
adalah string literal dan‖O
penyebab yang<
harus tercermin ke sisi lain_
.Ini
=
adalah string literal dan↗÷χχ
menarik garis panjang 10/10 yaitu 1 secara diagonal, yaitu/
.Angka-angka
9-1
dan0
dilemparkan ke string dan jadi cetak sebagai angka, sedangkan0
di tengah secara logis dinegasikan mengubahnya menjadi1
yang merupakan cara lain untuk mencetak a-
. (Dan saya bahkan belum menggunakannya sebagai literal!)Ini mengambil string literal
D^B
dan mengubahnya menjadi array, yang biasanya akan mencetak secara vertikal, namun arah cetak ditimpa ke vertikal yang menghasilkan ... keluaran terbalik lagi!Ini mencari karakter di posisi 3 dan 23 dalam alfabet huruf besar (0-diindeks).
The
↶⁴
berputar arah cetak melalui 180 ° sehingga menyebabkan literal string yangpx
akan dicetak terbalik lagi.sumber
↶⁴px
kapanxp
akan berfungsi juga.Jelly , 6
+1 datang ?? dylnan menyarankan penggunaan
ṭ
untuk membebaskanȮ
, tetapi dapatkah itu digunakan?Enam program lengkap:
;] xp ; D : 0 XP 8-0
“;]
⁾xp
⁽8Ạb⁹Ọ
”:®ṭ
24,16ịØA
7‘.NṾṖ⁺
31 byte berbeda digunakan, konfirmasi di sini .
sumber
”:ṭ@¬
akan memungkinkan Anda untuk menggunakanȮ
program lain”:®ṭ
lebih pendek juga.0”:0
bekerja taktik membebaskan-
.¶
dan karakter baris baru memetakan ke byte yang sama).Ruby , 7
= \ Cobalah online! Sebuah string literal
> _> Coba online! String literal lainnya
: p Cobalah online! Mencetak
:p
simbol termasuk sintaks (:
) karena menggunakanp
metode%) Cobalah online! Namun string lain literal
XP Cobalah online! Di sini mendokumentasikan notasi (pada dasarnya string multiline literal)
;] Cobalah online! Array 2 karakter (
':'
dan']'
) bergabung dengan'-'
D8 Cobalah secara online! String sumber ekspresi reguler
__
Sebutan terhormat Coba online! Jalankan kode dalam bash, kembali
emoticon
dengan trailing\n
sumber
Python 2, 4
Jawaban ini adalah awal yang sangat sederhana. Untuk dua yang pertama kita hanya menggunakan dua sintaks string python yang berbeda. Untuk yang ketiga kami menggunakan metode yang sama dengan jawaban Haskell saya di mana kami membuat tuple mendapatkan representasi string dan mengirisnya. Untuk bagian terakhir kita menggunakan
chr
fungsi untuk membuat karakter:
dan)
dan menambahkan mereka bersama-sama.xD
= \
8)
:)
sumber
=/
.R , 4
Cobalah online!
Upaya pertama pada solusi R. Kebutuhan untuk menggunakan tanda kurung untuk panggilan fungsi apa pun secara serius mengurangi kemungkinan. Cuplikan pertama adalah panggilan
quote
yang hanya mengembalikan argumennya - Terima kasih @BLT karena menunjukkan kepada saya cara untuk melakukannya tanpa tanda kurung, memungkinkan saya untuk digunakanintToUtf8
pada baris berikut.Saya menggunakan trik lain yang @Giuseppe sebutkan dalam komentar untuk pertanyaan lain sekali untuk mengeja
quote
tanpao
dant
.sumber
mtcars[4,5]
) tetapi tidak ada dadu sejauh ini.intToUtf8
, dll.) Menggunakan tanda kurung.+
= quote; + XP untuk membebaskan tanda kurung? (tidak yakin bagaimana membuatnya muncul tanpa format Markdown - tanda + dikelilingi oleh backticks)Fisi , 3
| ;-)
Cobalah online!
XP
Cobalah online!
:Hai
Cobalah online!
Hanya ada 3 cara untuk menghasilkan sesuatu di Fission, jadi inilah kita
sumber
Perl 5, 6
:-)
:)
: -3
=]
B ^ D
XP
Cobalah online .
sumber
Javascript, 5
Tiga yang sepele, lalu dua yang menarik:
xD
XP
<_ <
: 3
Tidak ada karakter untuk string literal yang tersisa untuk yang keempat, jadi kami mendapatkan string dengan menggabungkan dengan array. Usus besar berasal dari penulisan fungsi yang menggunakan titik dua, kemudian mengubahnya menjadi string.
8)
Yang ini bekerja sangat mirip dengan yang keempat, tetapi menggunakan metode yang sedikit berbeda untuk melakukan semuanya.
Terima kasih kepada @ steve-bennett karena menyarankan menggunakan
String
konstruktor dan.slice
sebagai alternatif untuk menyatukan dengan array, dan pengindeksan. Berhasil memeras +1 poin dari itu.sumber
String.fromCharCode(58)+String.fromCharCode(91)
mungkin akan menjadi versi yang lebih mudah dari yang terakhir.String(D=>1).slice(0,2)
/>_>/.source
new RegExp().toString().substring(3,5)
[((new Date)+[]).charAt(18), ~2].join(name)
0+String(-3)