Tugas
Diberi huruf (A, B, C), dan angka (0-10), menampilkan ukuran ukuran kertas standar yang cocok (Seri A dan B) atau ukuran amplop standar yang cocok (seri C) dalam milimeter dalam format aaaa x bbbb
di mana aaaa
dan bbbb
apakah pengukuran lebar dan tinggi dalam milimeter sesuai ISO216 (Seri A & B) atau ISO296 (Seri C)
Untuk mempermudah, saya akan mengutip tabel Ukuran Kertas Wikipedia
ISO paper sizes in portrait view
Format A series B series C series
Size mm × mm mm × mm mm × mm
0 841 × 1189 1000 × 1414 917 × 1297
1 594 × 841 707 × 1000 648 × 917
2 420 × 594 500 × 707 458 × 648
3 297 × 420 353 × 500 324 × 458
4 210 × 297 250 × 353 229 × 324
5 148 × 210 176 × 250 162 × 229
6 105 × 148 125 × 176 114 × 162
7 74 × 105 88 × 125 81 × 114
8 52 × 74 62 × 88 57 × 81
9 37 × 52 44 × 62 40 × 57
10 26 × 37 31 × 44 28 × 40
Jadi contoh input dan output:
**Test case 1**
Input: A4
Output: 210 x 297
**Test Case 2**
Input: B6
Output: 125 x 176
**Test Case 3**
Input: C2
Output: 458 x 648
Hal yang perlu diperhatikan:
- Format "210 x 297" atau "1000 x 1414" dll. Meskipun ini adalah format yang lebih disukai, Anda dapat memilih untuk menghilangkan "x" dari output Anda, yaitu dalam bentuk array atau dua angka atau apa pun yang menggelitik keinginan Anda selama pengukuran lebar dikeluarkan sebelum ketinggian.
- Rasio antara tinggi dan lebar kira-kira setara dengan akar kuadrat dari 2, sehingga dalam perhitungan ketinggian, lebar dikalikan dengan sqrt (2), dan kemudian dibulatkan ke atas atau ke bawah ke milimeter terdekat, sehingga menghasilkan pengukuran pada tabel di atas. Ini dapat membantu menurunkan kode Anda.
- Dalam ukuran berturut-turut untuk seri saat Anda turun tabel, lebar untuk satu ukuran menjadi tinggi untuk yang berikutnya. Ini juga dapat membantu Anda mengurangi kode Anda.
Aturan:
- Ini adalah kode-golf. Aturan standar berlaku sebagai hasilnya. Skor akan didasarkan pada jumlah byte. Hitungan terendah akan menang.
- Tidak ada celah konyol , kita pernah ke sana sebelumnya ... Kita tidak akan melalui ini lagi.
- Jika Anda dapat mengkodekannya, silakan pertimbangkan melampirkan tautan ke instance kode Anda yang berfungsi sehingga programmer dan pegolf lain dapat mempelajari cara kerja kode Anda. Ini tidak wajib, tetapi saya ingin mendorong orang lain untuk melakukan ini sehingga kita semua dapat saling belajar. Saya tentu ingin belajar lebih banyak tentang bahasa pegolf lain jika memungkinkan.
Semoga berhasil.
Jawaban:
JavaScript (ES7), 57 byte
Disimpan 1 byte berkat @WallyWest
sumber
s=>n=>[n,n-1].map(x=>.707**x*{A:841,B:1e3,C:917}[s]+.2|0)
dan masih akan memiliki presisi yang sama dalam output Anda..7071
dan.2
untuk sementara waktu dan hanya sedikit menyerah ketika saya menemukan sesuatu yang berhasil: P.map
, Anda dapat menggunakan{key1:1,key2:2,key3:3}[myKey]
kapan saja Anda inginkan. Anda hanya perlu mengutip kunci jika itu bukan nama variabel yang valid.C (gcc) ,
113111907870 bytePerlu
-lm
dijalankan pada TIO, tetapi berfungsi dengan baik di komputer saya tanpa opsi.Disimpan 20 byte berkat pizzapants184 .
Kembalikan nilai dengan pointer.
Penjelasan:
sumber
char
danint
(a^66?a^67:0.5:0.25:0)
keabs(a-66)/(a-63.)
Python 2 ,
1039793848381 byteCobalah online!
sumber
Batch, 105 byte
41/29 ≅ √2
sumber
h*.707
akan lebih baik daripadah*41/29
? Pikirkan Anda, penggunaan perkiraan yang cerdik!JavaScript, 53 byte
Tampilkan cuplikan kode
Simpan banyak byte dengan menggunakan format output alternatif, terima kasih kepada Neil.
sumber
L=>N=>(g=p=>1000.2/2**(N/2+p-{A:2,B:4,C:3}[L]/8)|0)(.5)+' x '+g(0)
L=>N=>[N+1,N].map(p=>1000.2/2**(p/2-{A:2,B:4,C:3}[L]/8)|0)
Java (OpenJDK 8) , 59 byte
Cobalah online!
Terinspirasi oleh entri C @Colera Su , kemudian ditingkatkan sendiri.
sumber
1000
bisa1e3
.MATL ,
343330 byteCobalah online! atau Verifikasi semua kasus uji
Disimpan 4 byte berkat Luis Mendo
sumber
APL (Dyalog) ,
3128 byte-2 Terima kasih kepada ngn.
Badan program penuh. Diasumsikan
⎕IO
( I ndex O rigin)0
, yang merupakan default pada banyak sistem. Meminta nomor, lalu surat, keduanya dari STDIN. Mencetak ke STDOUT.Cobalah online!
Versi yang sedikit dimodifikasi memungkinkan kami menguji semua kemungkinan sekaligus: Cobalah secara online!
⍳2
dua ɩ informasi pertama, yaitu 0 dan 1⎕-
kurangi dari input numerik4×
kalikan empat dengan itu(
...)+
tambahkan berikut ini⍞
input karakter ...'BC'⍳
... ɩ ndex dalam string ini ("A" akan memberikan 2, karena indeks melampaui yang terakhir)8÷⍨
bagi dengan 82*
meningkatkan 2 pangkat itu1E3÷
1000 dibagi dengan itu.2+
tambahkan ⅕ ke sana⌊
lantai (bulat ke bawah)sumber
Befunge,
695655 byteCobalah online!
Penjelasan
Kami tidak memiliki kemewahan titik apung atau apa pun seperti fungsi daya di Befunge, jadi kami menghitung ukuran dasar untuk karakter format yang diberikan, f , sebagai berikut:
Kami kemudian berulang kali memutar dan membagi dimensi ini untuk mendapatkan subdivisi yang sesuai untuk nomor ukuran yang diberikan.
sumber