Persyaratan
Demi tantangan, mari kita tentukan sebuah unit :
Unit didefinisikan sebagai titik mana pun yang menyusun kisi di mana wajah digambar (piksel untuk layar, karakter untuk seni ASCII, dll.).
The persyaratan minimal untuk wajah adalah:
Wajah tersenyum terdiri dari bentuk yang menyerupai lingkaran (belum tentu sempurna) dari radius apa pun. Harus ada setidaknya 1 unit untuk masing-masing dari dua mata dan setidaknya 2 unit untuk mulut. Mata dan mulut harus dalam bentuk wajah. Mulut dapat berorientasi seperti yang Anda inginkan (bahagia, sedih, acuh tak acuh, dll.).
Berikut ini contoh outputnya:
0 0 0 . . .
0 . . 0 . o o .
0 --- 0 . \_/ .
0 0 0 . . .
Tujuan
Tentu saja tujuan utamanya adalah menghasilkan kode sesingkat mungkin, tetapi seni juga penting.
Pemenang
Pemenang dipilih berdasarkan jumlah suara dari pengguna, dalam, setidaknya, 5 hari ke depan.
sumber
alt + 1
danalt + 2
akan menghasilkan ☺ dan ☻ masing-masing. Demi argumen, saya akan mempertimbangkanalt
tombol tekan karakter dan memanggil 2 karakter.Jawaban:
Javascript, 340
Javascript, 283
versi yang dioptimalkan (dengan beberapa peningkatan & tanpa spasi putih yang tidak perlu)
Yah .. mungkin itu tidak sesingkat yang Anda inginkan tetapi tidak konvensional pasti. Ini terlihat lebih baik ketika browser Anda dimaksimalkan. Saya sangat menikmati pertanyaan Anda! Jika Anda ingin menambah detail, kurangi
d
sedikit variabel.sunting: Sayangnya saya tidak dapat menjalankannya di jsfiddle
tetapi Anda dapat menempelkannya ke konsol Javascript di browser yang ada. Oh, dan aktifkan munculan di halaman :).edit2: Anda dapat menjalankannya membuat file html baru dan menempelkan kode ke dalamnya:
Kemudian ketika Anda menjalankannya dan tidak ada yang terjadi, cukup aktifkan jendela sembulan dan muat ulang laman. Selain itu saya tempel
sumber
HTML,
200141 karakterBerkat berhasil , saya mengurangi ini menjadi 141 karakter :
Inilah HTML asli:
Berfungsi paling baik di layar kecil:
sumber
Brainfuck: 583 karakter (tanpa menghitung spasi)
Keluaran:
sumber
SVG
Render seperti ini:
sumber
Ruby, 224
Douglas Adams akan ngeri. :-P
Keluaran:
Ruby, 110
Teknik yang sama. Kode lebih sedikit. Kurang berseni. Sepertinya seseorang melelehkan plastik yang tersenyum. : -}
Keluaran:
sumber
QBasic ASCII, 134 (tidak dioptimalkan)
Jawaban ini benar-benar menipu dengan menggunakan karakter ASCII 1 untuk senyumannya. Namun, tidak seperti jawaban BF dan "teks biasa", itu benar-benar mematuhi aturan dengan membuat ASCII seni berdasarkan piksel karakter smiley, daripada sekadar mencetak karakter sebagai solusi penuh. Versi yang tidak dioptimalkan menunjukkan bagaimana IDE QBasic menyimpan file. IDE adalah "membantu" memperbaiki sintaks untuk kita dan menambahkan banyak spasi di mana "dibutuhkan".
Keluaran:
QBasic ASCII, 80 (dioptimalkan)
Ini adalah versi yang dioptimalkan dari contoh kode pertama, yang masih dimuat dalam QBasic. Hal-hal yang dilakukan:
CHR$(1)
dengan string yang berisi karakter sebenarnya. (Di sini diilustrasikan dengan karakter Unicode yang cocok. Jika Anda benar-benar ingin mencoba kode, harap ganti dengan karakter ASCII 1 nyata menggunakan hex editor.)PRINT
dengan?
, sebagaimana tradisi BASIC memungkinkan.IF
garis dengan garis yang mencetak karakter berdasarkan nilai piksel sumber. Ini akan menjadi 0 atau 3. 0 adalah warna hitam. Character 0 mencetak karakter nol yang diperlakukan seperti spasi. 3 adalah warna putih dalam palet 4-warna CGA. Karakter ASCII 3 adalah hati.Keluaran:
QBasic graphical, 83 (whitespace dioptimalkan)
Tapi tunggu, saya di sini Anda bertanya, tidak bisakah Anda menggunakan perintah grafis bawaan QBasic? Tentu, tetapi itu tidak akan benar-benar menyelamatkan Anda byte, karena verbositas bahasa. Tetapi memang memiliki fungsi built-in untuk hanya menggambar busur lingkaran antara dua sudut yang diberikan, yang bagus. Sudut diberikan dalam radian, dan
4
dan5.4
perkiraan lingkaran busur simetris yang berpusat di sekitarπ*3/2
, atau jika Anda telah bergabung sisi baik ,τ*3/4
.Keluaran:
Catatan: Ukuran dalam jawaban ini menunjukkan seberapa besar file tersebut, dalam byte.
sumber
APL, 97 karakter / byte *
Ia bekerja dengan menghitung beberapa persamaan lingkaran. Diuji pada GNU APL .
Output ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL dapat ditulis dalam charset single-byte (warisan) sendiri yang memetakan simbol APL ke nilai 128 byte atas. Oleh karena itu, untuk tujuan penilaian, program karakter N yang hanya menggunakan karakter ASCII dan simbol APL dapat dianggap sebagai panjang N byte.
sumber
Bash, 63 karakter
Keluaran:
Kesenian:
Sapi
sumber
Bash, 22 karakter
Output sampel:
Sunting: ini bisa dipagari lebih lanjut seperti yang disarankan oleh beberapa orang. Versi mandiri terpendek yang ditemukan sejauh ini adalah:
(terima kasih nitro2k01)
sumber
curl -L x.co/3WG0m
. Lebih lanjut dapat dioptimalkan jika kita memiliki nama host lokal satu karakter yang juga mengembalikan data secara langsung (menghilangkan-L
saklar yang diperlukan untuk mengikutiZ
yang menunjuk ke server yang menjadi tuan rumah file tersebut.Python
247230227 Karakter - dan versi imutPython 243 Karakter - Menggunakan warna
sumber
C ++ - 122 karakter tanpa spasi yang tidak perlu
Ini yang paling realistis yang bisa saya pikirkan:
Bagi Anda yang kehilangan, itu menciptakan ini:
sumber
return 0;
tidak diperlukan dalam ISO C ++ :)sumber
PHP, banyak bahasa lain ... - 1601 karakter
Sumber Smiley: Asciiworld.com: Smiley
sumber
html, css
Saya tahu ini bukan pengkodean pendek atau nyata, tetapi saya masih ingin memposting ini
jsFiddle
sumber
#d{border-radius:20px/10px;}
. Atau dengan#d{border-radius:0 0 20px 20px/0 0 10px 10px;}
. Atau dengan#d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}
.Rebmu , 24 karakter
Oh, kemanusiaan minimal . :-) Belum ada program Rebmu yang mengesankan, dengan sengaja menanamkan pHp sebagai penghargaan untuk pil biru di dunia pemrograman :
H{ -- }pHp{|..|^/|\/|}pH
Eksekusi:
Penjelasan
Rebmu hanyalah dialek Rebol . Ini mewarisi batasan parse, menggunakan istilah disingkat tanpa spasi yang dipisahkan oleh huruf kapital. Ini memiliki perlakuan khusus ketika dijalankan pertama dikapitalisasi vs tidak dikapitalisasi.
(Jadi, bukannya memisahkan istilah seperti
AbcDefGhi
itu dapat menggunakan perbedaan antaraABCdefGHI
danabcDEFghi
untuk memeras sedikit informasi. Urutan yang berjalan mulai dalam semua huruf kapital dipisahkan sehingga istilah pertama mewakili "kata-kata!", Sering diartikan secara kontekstual sebagai keinginan untuk tugas. lihat video )Jika Anda ingin menerjemahkan ini ke Rebol asli, Anda harus menerima hal-hal seperti itu dimulai dengan huruf H yang berarti itu sebenarnya
h:
dan bukanh
. Sumbernya analog dengan:Menetapkan string
--
ke h (menggunakan pembatas string asimetris karenaprint {"Isn't it nice," said {Dr. Rebmu}, "when you have asymmetric multi-line string delimiters with no need for escaping matched nested pairs, and that accept apostrophes and quotes too?"}
Mencetak h sekali, mencetak string lain di mana
^/
urutan pelarian untuk baris baru (tanda yang lebih jarang digunakan dalam perangkat lunak daripada garis miring terbalik yang sering muncul di jalur) , mencetak h lagi.sumber
JavaScript
262251Sunting: menambahkan mata yang lebih baik.
Mencetak wajah tersenyum ke konsol.
Bisa kehilangan beberapa karakter untuk membuat bitmask saya lebih sederhana dan mencetak wajah yang kurang cantik, atau menggunakan persamaan lingkaran daripada elips untuk menjelaskan jarak karakter - tapi itu bukan semangat.
Anda dapat mengubah
r
variabel untuk mengubah ukuran dan mendapatkan wajah yang kurang lebih detail; nomor berapa pun>=7 && <=99
akan memberikan hasil yang baik dan tetap dalam batas karakter.Dapat dibaca manusia:
Keluaran:
Gim golf pertama saya sepertinya akan beberapa perbaikan.
sumber
Perl, 106 karakter
Ini adalah Perl oneliner, hanya perlu C&P pada command prompt, asalkan
Acme::EyeDrops
modul Perl sudah diinstal pada mesin.Cara lain, tersenyum dengan Menarik mukanya
Namun cara lain, senyum dengan Menarik wajah terbalik,
sumber
Bash + ImageMagick: 137 karakter
Output sampel:
Tapi karena ini adalah tantangan seni-ascii ...
Bash + ImageMagick: 172 karakter
Output sampel:
sumber
GolfScript, 27
Ini menghasilkan contoh ke-2 persis seperti yang diberikan.
Yang pertama bisa dilakukan dengan cara yang sama, tapi saya pikir yang ke-2 terlihat lebih bagus :)
sumber
Brainf *** - 2
Mencetak
☺
atau nilai ascii 1. (mungkin tidak bekerja dengan beberapa platform)sumber
Bash - one liner: 442 karakter
Contoh output: (dipanggil oleh
m 8
)Agak gila, tapi saya memilih menggunakan berlian daripada lingkaran. Mata ditutupi oleh kacamata pengaman.
BASH - 252 karakter (terima kasih @manatwork)
sumber
s(){ (($1>1))&&echo -n "${2:- }"&&s $[$1-1] $2;};m(){ ((t=2*$1));while ((t=t-1));do v=$[$1-t];l=$[${v#-}+1];s $l;q=$[2*($1-l)];w=`s $q`;((l>t&&l<t+3&&q>2))&&w=" `s $[q-2] 0` ";((t>$1+1&&q>3))&&{ g=`s $[(q-1)/2] 0`;w=" $g $g ";};echo "+${w:+$w+}";done;}
. Atau 245 jika Anda menyerahkan fungsi m dan meletakkan kode dalam file skrip. Mungkin dapat dikurangi bahkan lebih dengan mengubah perhitungan, tetapi saya tidak punya waktu untuk itu sekarang.HTML + CSS, 83
tangkapan layar (menggunakan firefox):
Sayang sekali saya terlambat dengan jawaban saya (mendapat +10 perwakilan juga cukup terlambat ...)
sumber
border-radius:50%
dan satu<hr>
: dabblet.com/gist/8472397
: jsfiddle.net/T9BdL/2GolfScript, 18
Program ini menggunakan beberapa nilai yang dikodekan biner yang muncul sebagai karakter aneh / tidak valid dalam editor teks.
Inilah hex dump:
Catatan: tidak berfungsi di lokal UTF-8, tetapi berfungsi baik dengan ISO-8859-1 misalnya.
Versi yang diperluas dengan karakter yang lolos:
Keluaran:
Untuk output yang lebih bagus, Anda dapat mengganti blok
{2base{38+}%n}
yang membawa versi biner ke 23 byte. Versi yang diperluas:Keluaran:
sumber
JavaScript
Kode ini harus dijalankan di
f12
halaman ini:Keluaran:
sumber
CJam, 18
Saya memutuskan untuk mencari kode pendek ... Coba di sini .
Penjelasan
Ini mengeksploitasi simetri wajah tersenyum yang saya rancang.
Keluaran
sumber
uu
untuk senyum adalah sebuah pilihan, jika Anda ingin senyum "kucing" itu ...Python
Keluaran:
sumber
Python, 42
sumber
HTML 5: 321 Karakter
Fiddle: http://jsfiddle.net/wfNGx/
Sumber: http://www.codecademy.com/courses/web-beginner-en-SWM11/0/1
sumber
Perintah atau builtin shell
Bergantung pada rasa shell atau set perintah Anda,
echo
mungkin atau mungkin tidak menafsirkan karakter kontrol dengan atau tanpa-e
... (... dan saya menuntut agar saya mungkin atau mungkin bukan Vroomfondel!) Coba saja ... dan jika semua yang lain gagal, menggunakanprintf
harus menjadi taruhan yang aman ...sumber
C 178 karakter:
source (whitespace ditambahkan - semua dapat dihapus kecuali pada
int x
keluaran:
sumber