Ketika angka ditampilkan pada kalkulator, dimungkinkan untuk mempertimbangkan seperti apa transformasi dari angka itu. Misalnya, pada tampilan tujuh segmen, 2 ditampilkan seperti ini:
Dan ketika dibalik secara horizontal terlihat seperti ini:
Dengan demikian, gambar cermin 2 adalah 5.
Tugas dalam tantangan ini adalah untuk mengambil nomor satu digit, dan mengembalikan nomor yang merupakan gambar cerminnya (jika mungkin). Jika gambar cerminnya tidak terlihat seperti angka, kembalikan angka yang diputar 180 derajat (jika mungkin). Jika tidak ada yang seperti ini, kembalikan -1.
Berikut daftar lengkap input dan output yang perlu ditangani oleh program Anda:
Input Output
0 0
1 -1
2 5
3 -1
4 -1
5 2
6 9
7 -1
8 8
9 6
Sebagai tantangan kode-golf , kode terpendek menang!
Jawaban:
Haskell -
433143 karakter tanpa sesuatu yang mewah.
Turunkan menjadi 31 karakter dengan menjadikannya fungsi parsial.
sumber
f=
untuk solusi kedua karena ini adalah ekspresi yang validGolfScript,
1514Saya membaca spec lagi dan menemukan bahwa input harus berupa string.
Untuk berlari:
Versi lama (yang memiliki input integer):
Yang lebih baru (14 byte) agak terinspirasi oleh jawaban CJam oleh aditsu .
sumber
PowerShell - 27
sumber
Python 2.x - 28
sumber
`
dan menyimpan 2 karakter.JavaScript
3736sumber
.search()
dan simpan satu byte.CJam, 20 byte
Cobalah online.
Keluaran
Bagaimana itu bekerja
sumber
BEFUNGE 93 -
181420 BytesSaya kira komentatornya benar, meskipun Befunge menjadi garis bahasa 2d agak berbeda. Namun, saat ini, para komentator benar.
Langkah:
Membaca input sebagai nilai numerik x, dan mendorongnya di tumpukan.
Mendapat nilai karakter c (jadi, seperti '!' = 33, atau '*' = 42. Sel kosong = 32) pada posisi x, 1.
Membaca nilai karakter sel 0,1 (33), mengurangkannya dari c, dan mengeluarkannya sebagai nilai numerik.
sumber
&1g'!-.
Jawa - 49
Di sini,
0x790a300601
adalah nilai yang diisi dengan output yang diinginkan, dengan satu nilai tambah untuk membuatnya positif. Nilai-nilai tersebut disimpan dalam camilan dalam nilai tersebut, sehingga diperlukan sedikit pergeseran dan penutup untuk menghapusnya.Java - 100 (opsi menyenangkan)
Bukan pilihan terkecil, tapi sedikit kesenangan. Saya menemukan seed acak yang menghasilkan nilai yang benar ketika dipanggil X kali (di mana 0> = X <= 9).
sumber
JavaScript (ECMAScript 6) 25
JavaScript (ECMAScript 5) 43
UPDATE: edc65 telah menyarankan teknik yang jauh lebih baik. sikat gigi telah menyarankan bahasa yang jauh lebih baik. Pada titik ini, kontribusi utama saya adalah debugging dan keberanian.
sumber
x=>[0,-1,5,-1,-1,2,9,-1,8,6][x]
.function(x)[0,-1,5,-1,-1,2,9,-1,8,6][x]
, juga berkat Firefox. Lagi pula saya tidak akan menang, jadi saya memutuskan untuk tetap dengan jawaban kompatibilitas tertinggi. Jika saya mulai beralih bahasa untuk singkatnya, maka saya akhirnya akan mulai mendefinisikan bahasa saya sendiri untuk setiap tantangan yang saya lakukan. Tapi saya akan melanjutkan dan menyebutkan versi ECMAScript 6, karena Anda menyarankannya-(x!=6)
. Terima kasih.f=
kecuali jika Anda meneleponf
secara rekursif atau pertanyaan secara eksplisit membutuhkan fungsi dengan nama tertentubash 29
misalnya
sumber
'
sekitar ekspresi sed. Juga saya pikir Anda dapat menghilangkang
karena spec hanya memasok satu digit pada satu waktu'
. Menyukaig
input yang lebih lama!Kona - 29
Fungsi ini mengembalikan elemen
x
dari array0 -1 5...
Contoh:
sumber
JavaScript 36
3741sebagai fungsi ES6 - 27:
sumber
f=v=>~-[1,,6,,,3,10,,9,7][v]
Sclipting, 11 karakter
Akhirnya saya menemukan komputer Windows dengan Visual Studio diinstal untuk membangun interpreternya. Dan itu telah mengalahkan kode GolfScript saya dengan mudah.
Bunyinya
18453063256\11\?/11%(
dalam GolfScript.sumber
J -
2827 byteAnda tahu apa yang saya sukai? Kesederhanaan (28 byte). Perhatikan bahwa dalam J,
_1
negatif satu (-1).Tambahkan sedikit kerumitan dan Anda memiliki 27 byte.
Contoh:
sumber
CJam - 14
Versi input / output:
Versi tumpukan (menganggap nomor ada di tumpukan):
Cobalah di http://cjam.aditsu.net/
sumber
Perl,
2726Hitung termasuk
p
benderaPemakaian:
Tunggu, apakah Perl baru saja mengalahkan J? :)
sumber
y+0-9+9a4aa70a13+;$_=9-hex
, yang memiliki panjang yang sama, tetapi Anda lebih asli;)echo 1 | perl -pe y/2569/5296/,s/[347]/-1/
Marbelous 34 byte
Ini bukan solusi terpendek, tetapi juga bukan yang terpanjang.
Bagaimana itu bekerja
}0
memunculkan marmer yang mewakili input baris perintah pertama. Marmer ini menurunkan centang berikutnya, ke=6
sel.=6
adalah sel pembanding, itu mendorong setiap marmer dengan nilai 6 ke bawah dan semua yang lain ke kanan. Line-up sel perbandingan ini mendorong kelereng sampai mereka menyamai nilai yang diinginkan. 0 dan 8 hanya jatuh dan dicetak ketika teh jatuh dari papan bawah, 6 dan 2, dan 9 dan 5 pertama-tama mendapat 3 ditambahkan ke mereka, dikurangi dari masing-masing. Jika marmer tidak sama dengan nilai yang diinginkan, ia akan mendarat di?0
sel, yang mengubah marmer menjadi 0 marmer 1 . Marmer ini kemudian dikurangi dan jatuh dari papan.1 A
?n
marmer teknis ternyata marmer apapun menjadi marmer antara 0 dan n. Ini memiliki efek samping yang bagus yang?0
mengubah apa pun menjadi 0.sumber
MATLAB - 35
Saya akan membungkus ini dalam suatu fungsi dengan
n
sebagai satu-satunya parameter.35 karakter.
sumber
ECMASkrip 6, 24
Menggunakan JavaScript normal itu akan menjadi 33:
sumber
TI-BASIC,
2422Ini mengkodekan kemungkinan output dalam tabel pencarian yang disimpan sebagai nomor floating-base base-11; angka (N + 1) basis-11 setelah titik desimal diekstraksi dari tabel untuk mendapatkan nilai digit terbalik. Di base 11 angkanya
.106003A097
, dan digit yang kurang ini persis0,-1,5,-1,-1,2,9,-1,8,6
.Trik edc65 untuk mengurangi satu dalam kasus 6 mengarah ke solusi 24-byte ini, di mana
⑩^(
adalah token satu-byte tunggal:Pendekatan string adalah 29 byte:
Pendekatan array (yang juga diambil Ypnpyn) adalah 30 byte, dengan asumsi nomor disimpan dalam X:
24 -> 22: Menghapus dua digit ekstra presisi dalam konstanta sihir.
sumber
C - 47 byte [adalah 48 Bytes]
Untuk menambahkan I / O (yang jawaban lainnya tidak selalu) untuk 86 byte:
sumber
Python - 34
sumber
f=lambda n:ord(" "[n])-3
bekerja dengan angkasa codeskulptor.org/#user34_Q7NbNvQy55_0.py	
Ini minus 3 karena -1 meninggalkan karakter nol yang tidak baik, dan minus 2 meninggalkan umpan baris yang dicadangkan dalam pythonJawa, 58
59ATAU
sumber
JavaScript
4237Jalankan di konsol browser Anda
sumber
C -
1171081067776 byteBukan bahasa terbaik untuk bermain golf, tapi oh well ...
Kompilasi dengan
gcc progname.c -o progname
. (Abaikan peringatan, atau tambahkan-include stdio.h
ke perintah kompilasi.)EDIT
Sesuai saran @ bebe, berikut adalah contoh yang mengambil input dari STDIN sebagai gantinya:
C -
6851 bytesumber
d=*b[1]-48
bisa menjadi ide yang bagusmain(){printf("%d",(int[]){1,0,6,0,0,3,10,0,9,7}[getchar()-48]-1);}
maaf telah mengganggu Anda sejauh ini tetapi saya menemukan ini sedikit lebih pendek.a[]={1,0,6,0,0,3,10,0,9,7};main(){printf("%d",a[getchar()-48]-1);}
main(){printf("%d","106003:097"[getchar()-48]-49);}
51 bytesJ (24, fungsi)
(panel input tidak berfungsi dengan baik. Tempelkan yang berikut dengan juru bahasa python dan jawaban saya akan terungkap :)
sumber
Clojure - 36
sumber
05AB1E , 13 byte (tidak bersaing)
Cobalah online!
-3 Terima kasih kepada Emigna .
Penjelasan:
sumber
0®5®®Y9®8 6¹@
harus bekerja juga.@
. Tidak sering Anda melihat yang digunakan :))¹è
atau)sè
.PHP ,
4839 byteTerima kasih untuk Jörg Hülsermann
Cobalah online!
Versi yang lebih lama
Cobalah online!
sumber
Jelly , 14 byte (tidak bersaing)
Cobalah online!
Penjelasan:
sumber
ịV = žh‡
di 05AB1E