Deskripsi
Berikut lift hotel yang sangat takhayul di Shanghai:
Ia menghindari angka 13, karena tiga belas tidak beruntung di dunia Barat, dan menghindari angka 4, karena empat tidak beruntung di beberapa bagian Asia. Bagaimana jika hotel ini lebih tinggi?
Baca bilangan bulat genap positif n
dari STDIN, yang mewakili jumlah lantai, dan cetak seperti apa tata letak tombol untuk STDOUT:, -1
diikuti oleh n-1
bilangan bulat positif berikutnya yang tidak sama dengan 13 dan tidak mengandung angka 4. Atur ini angka dalam dua kolom seperti pada gambar di atas: mencetak dua nomor lantai per baris, dipisahkan oleh tab horizontal, sehingga membaca garis dalam urutan terbalik dari kiri ke kanan menghasilkan urutan dalam urutan menaik. (Anda juga dapat mencetak karakter baris baru yang tertinggal.)
Uji kasus
Untuk input 14
, output harus seperti pada gambar di atas:
15 16
11 12
9 10
7 8
5 6
2 3
-1 1
di mana spasi di setiap baris adalah karakter tab horisontal tunggal.
Untuk input 2
, Anda harus mencetak -1 1
.
Untuk input 100
, Anda harus mencetak:
120 121
118 119
116 117
113 115
111 112
109 110
107 108
105 106
102 103
100 101
98 99
96 97
93 95
91 92
89 90
87 88
85 86
82 83
80 81
78 79
76 77
73 75
71 72
69 70
67 68
65 66
62 63
60 61
58 59
56 57
53 55
51 52
39 50
37 38
35 36
32 33
30 31
28 29
26 27
23 25
21 22
19 20
17 18
15 16
11 12
9 10
7 8
5 6
2 3
-1 1
Tujuan
Ini adalah kode-golf . Jawaban terpendek dalam byte menang.
Jawaban:
Pyth, 27 byte
Cobalah online di sini .
Mendapat
.f
irstQ-1
nomor yang sesuai filter!=13
dan4
tidak dalam representasi string dari nomor tersebut. Kemudian ia menambahkan-1
, memotong dua, bergabung masing-masing dengan tab (C9
) dan bergabung dengan baris baru.sumber
Bash + utilitas umum, 51
seq
Menghasilkan bilangan bulat naik dari 1 ke N dengan tambahan 9 digit di depan - lebih dari cukup untuk input bilangan bulat 64bitsed
menyaring lantai dan sisipan yang tidak beruntung-1
sebelum baris 1rs
membentuk kembali menjadi dua kolom yang dipisahkan tabsed
berhenti setelah N / 2 baristac
membalikkan urutan jalur keluaransumber
sed $[$1/2]q
setelahrs
dengansed $1q
sebelumnya. Saya pikir itu membuatnya kompatibel dengan POSIX-shell.1
tidak akan cukup untuk mengkompensasi lulus hanya 0,9 ^ dari input melalui (angka tidak mengandung4
sparser dan sparser karena jumlah digit meningkat). Tetapi begitu Anda memiliki lebih dari beberapa ratus juta lantai di hotel Anda, Anda mungkin memiliki masalah lain, seperti menjaga pipa ledeng bekerja, dan mengatur staf rotas.$[]
aritmatika shell . Saya pikir ini adalah batasan yang masuk akal karena tidak adanya penyebutan eksplisit aritmatika presisi arbitrer dalam pertanyaan. Apapun, saya sekarang awalan9
bukan1
, hanya untuk berada di sisi yang aman.JavaScript ES6,
236234233210195188 byteMenyimpan banyak byte berkat kami dan teman-teman!
Menggunakan
function*
generator. Mungkin cara yang lebih singkat untuk melakukan ini, tapi itu menyenangkan. Sangat menyenangkan. Saya berani bertaruh golf bisa dilakukan. Benda-benda aneh itu adalah tab.sumber
z=+prompt(i=x=0,l=[]);
==>z=prompt(i=x=0,l=[]);
(-1 byte).join
dengan tab dan ganti spasi/-?\d+ \d+/g
dengan tab, hapus.map(x=>x.replace(/ /,"\t"))
(harus menyimpan 23 byte).filter(x=>x!=".0")
==>.filter(x=>+x)
, (-5 bytes).filter(..)
bagian! Cobal.push(a);
==>+a&&l.push(a);
(-15 bytes)C, 282 Bytes
Diformat:
Fitur :
Dapat menghitung hingga 2095.984 lantai, jika setiap lantai
19.5m
tinggi (termasuk langit-langit) maka bangunan ini cukup panjang untuk dililitkan di garis katulistiwa!2095984*19.5=40871688m=~40000km=one 'lap' around the planet
.sumber
while
dapat dikonversi kefor
dan ini memungkinkan Anda untuk menjatuhkan beberapa kurung kurawal.t/=10
byte lebih pendek darit=t/10
. Tambahkan 1 ke c difor
loop Anda untuk menyimpan beberapa byte ->a[c+1]
menjadia[c]
, sementara semua nomor lainnya memiliki panjang yang sama. Saya juga menggabungkan duaprintf
s di loop bersama-sama, dan menjatuhkan kurung kurawal lagi.Julia,
134132 byteRuang kosong lucu di sana adalah tab literal. Seperti yang dicatat Conor O'Brien, ini lebih pendek satu byte daripada melakukan
\t
.Tidak Disatukan:
sumber
Python 2,
120110 bytesumber
i-13
sebagai gantinyai!=13
JavaScript, 116
122Edit Disimpan 6 byte thx @Neil
Solusi array sederhana - bahkan tidak menggunakan ES6
Coba dengan browser apa saja
sumber
!/4/.test(v)
.' '
alih - alih'\t'
(tab literal)Python 2 , 94 byte
Cobalah online!
Ada karakter tab dalam string yang SE tidak render (terima kasih kepada Sp3000 karena disarankan untuk menggunakannya, menghemat byte).
Tes lantai
c
mulai dari lantai-1
sampai kuotan
lantai tercapai. Untuk setiap lantai, tes bahwa itu tidak mengandung4
atau tidak sama0
atau13
. Jika demikian, tambahkan ke string elevators
dan turunkan kuotan
.Trik dengan pemformatan string digunakan untuk membuat dua lantai per kolom agar muncul dalam urutan yang tepat saat prepended. Setiap baris baru disiapkan sebagai
'%d\t%%d\n'
, sehingga ketika dua lantai diganti secara berurutan, yang pertama di sebelah kiri dan yang kedua di sebelah kanan. Sebagai contoh,sumber
\t
. Ah, hari-hari sebelum TIO ada.C #, 296 byte
Tidak Disatukan:
Trik golf yang digunakan:
j+""
dari padaj.ToString()
namespace System.Collections.Generic
tidak hanya agar kita dapat mengaksesList<T>
, tetapi juga secara implisit menggunakan namespaceSystem
tanpa kualifikasi lebih lanjutusing
di dalam namespace sehingga kita dapat menulisusing Linq;
bukanusing System.Linq;
.Insert(0,j)
lebih pendek daripada menggunakan.Add(j)
dan kemudian menerapkan.Reverse()
Sangat disayangkan bahwa
using Linq;
itu perlu, karena itu diperlukan hanya untuk.Zip
, tetapi menulis ituLinq.Enumerable.Zip()
lebih lama.sumber
Ruby 2.3,
8483 karakter(82 karakter kode + 1 opsi opsi perintah)
Contoh dijalankan:
Ruby,
9392 karakter(91 karakter kode + 1 opsi baris perintah karakter)
Contoh dijalankan:
sumber
Lua, 169 Bytes
Cukup lurus ke depan, pertama-tama kita merakit tabel yang diisi dengan semua nilai tombol. Kemudian kita beralih ke belakang, mencetak dua nilai sekaligus, atau tidak sama sekali jika nilai kedua tidak ada.
sumber
Mathematica, 105 byte
Ganti
\t
dengan karakter tab yang sebenarnya.sumber
Brachylog , 105 byte
Akan jauh lebih pendek dengan dukungan CLPFD, di sini saya harus mencoba bilangan bulat di sub-predikat pertama.
Baris baru sebelumnya
"w,?bb:2&}
adalah wajib, ini adalah baris baru yang dicetak di antara setiap baris.sumber
C #,
277343Ini hanya sebagai fungsi. Saya baru mengenal C #. Peningkatan adalah untuk membuat valid untuk 40-49, dan untuk termasuk
using
sTidak digabungkan, sebagai program berjalan yang lengkap:
Dijelaskan
Saya membuat dua daftar, dan bergantian antara mendorong ke mereka, membalikkannya, loop melalui satu, dan ambil yang lain dengan indeks.
sumber
if(s==1)
denganif(s)
(pemain otomatis dari int ke boolean?)Python 3, 155 byte
Saya pikir mendengarkan, membalikkan, dan membuat zip sendiri generator nomor lantai
s()
mungkin terlalu pintar untuk kebaikannya sendiri, tetapi yang lain sudah melakukan alternatif (melompati dua item sekaligus), belum lagi menggunakan Python 2 yang menghemat byte pada beberapa poin penting.Alternatif yang lebih pendek, tetapi sudah dilakukan lebih baik membutuhkan 140 byte.
sumber
(0!=n!=13)!=('4'in str(n))
lebih pendek 5 byte darinot(n in(0,13)or'4'in str(n))
.Japt, 42 byte
Keempat spasi harus merupakan tab char aktual. Cobalah online!
Bagaimana itu bekerja
sumber
Lua, 141 byte
Tidak disatukan
Cobalah online (Anda perlu mengklik 'jalankan' di atas dan kemudian klik terminal di bawah sebelum mengetik input; Saya sedang mencari cara yang lebih baik untuk menguji lua online dengan stdin dan stdout)
sumber
05AB1E ,
252322 byte-1 byte terima kasih hanya untuk @ ASCII
Cobalah online!
Penjelasan
sumber
0 13ª
bagian jelek itu menjadi sedikit lebih baik. Terima kasih!ʒ4å_}
ke4мïê
. PS: berdasarkan komentar Anda sebelumnya:0 13ª
bisa¾13ª
juga.C ++ 11,
259258203202195194 byteDipotong 1 byte, berkat ide Conor O'Brien untuk menggunakan tab literal alih-alih
\t
.UPD 2: memangkas 55 byte dengan peningkatan logika dan penyalahgunaan koma.
UPD 3: byte lain mati berkat ceilingcat.
UPD 4: 7 byte dari courtcat.
UPD 5: dan byte lain dimatikan oleh ceilingcat.
Senang memiliki semua yang ada di tempatnya DAN masih mengalahkan solusi C dan C #.
Tidak Disatukan:
sumber
iostream
termasukstring
, sehingga Anda dapat melewati menyertakan kedua untuk penurunan besar dalam bytecount :)Java, 333 Bytes
Menambahkan nomor lantai yang dibolehkan ke tumpukan kemudian muncul kembali untuk mencetaknya.
Saya bermain-main menggunakan IntStream, tetapi dengan semua impor yang satu ini akhirnya menjadi lebih kecil.
sumber
Scala 147
sumber
Python 3, 117 Bytes
Versi modifikasi dari posting python 2 agar sesuai dengan spesifikasi python 3.
sumber
PowerShell, 106
107byteTidak disatukan
Contoh
sumber
Haskell 202 byte
Saya pemula Haskell ...
sumber
by2
dengan menggunakan nama 1 karakter dan memesan ulang: gunakan baris terakhir Anda apa adanya, kemudianb x = [x]
setelah.Javascript ES6 114 byte
Pemakaian
f (100);
sumber
Perl 6 , 73 byte
Mengasumsikan jumlah lantai yang genap, karena pernyataan masalah tampaknya mengasumsikannya juga dan setidaknya satu solusi lain memberikan istirahat untuk jumlah lantai ganjil. Tambahkan saja
,:partial
sebagai argumen keduarotor
, untuk sembilan byte lebih, untuk mendukung jumlah lantai ganjil.sumber
Jelly , 20 byte
Cobalah online!
Bagaimana?
sumber
JavaScript (ES6),
151146Apakah ini sebelum saya menyadari bahwa EDC65 telah membuat yang lebih pendek. Baiklah!
sumber
R , 106 byte
Cobalah online!
c("\t","\n")
\t
sumber
APL (Dyalog) , 34 byte
Cobalah online!
sumber