Yah, semua orang suka Polyglots . Anda akan diberikan dua bilangan bulat, dalam bentuk input standar apa pun (tanpa hardcoding). Tugas Anda adalah menulis polyglot yang menemukan nilai minimum dalam bahasa dan nilai maksimum antara dua angka dalam bahasa lain, dan melakukan operasi berikut:
- Kode yang menemukan nilai maksimum juga harus menghitung jumlahnya.
- Program yang menemukan nilai minimum juga harus menghitung hasil pengurangannya (
max - min
) - Inilah "bagian rumit" : Jika kedua angka sama, kedua program tidak boleh mengeluarkan / mengembalikan apa pun (baik ke
STDOUT
danSTDERR
ataureturn
metode lainnya ) - Lihat bagian Spesifikasi spesifikasi untuk detail lebih lanjut tentang pemformatan
Memasukkan
Seperti yang dinyatakan di atas, dua bilangan bulat diambil sebagai input dalam metode standar apa pun , umum untuk kedua bahasa.
Spesifikasi keluaran
- Untuk program yang menemukan
max
, formatnya harus:max_value, addition result
- Untuk program yang menemukan
min
, formatnya harusmin_value, subtraction result (max - min)
- Hasil dapat dicetak, dengan pembatas yang jelas (
,
\n
,,
atau apapun yang Anda inginkan), kembali dari fungsi sebagai string yang berisi dua nilai yang diharapkan dengan pembatas atau sebagai daftar nomor (misalnya:[max_value,sum]
)
Contoh:
Input || Max Language Output || Min Language Output
100, 40 || 100, 140 || 40, 60
63, 67 || 67, 130 || 63, 4
-45, -5 || -5, -50 || -45, 40
21, 21 || ||
-1, 1 || 1, 0 || -1, 2
Mencetak:
Ini adalah kode-golf , jadi cobalah menulis kode terpendek untuk mendapatkan hasil yang diinginkan, sambil memperhatikan bahwa Standard Loopholes dilarang keras. Anda harus menggunakan dua bahasa berbeda, bukan versi lain dari bahasa yang sama (mis:: Python 2
- Python 3
pasangan tidak valid)
code-golf
math
arithmetic
polyglot
Tuan Xcoder
sumber
sumber
Jawaban:
05AB1E / Jelly ,
2120 byte-1 byte setelah meminta bantuan - terima kasih Emigna! (
`
akanpush(uwrapped(pop()))
)Byte mentah (dump di sebelah kanan menunjukkan apa yang ditampilkan oleh mesin Windows saya):
Keduanya mengambil input dari STDIN dan output ke STDOUT sebagai representasi daftar
[x, y]
.Bahasa maks adalah 05AB1E:
Di mana
.
byte mewakili yang tidak dapat dicetak dalam codepage itu ( cp1252 ), dan mungkin di sini dalam apa pun yang Anda gunakan (0x18 = CANdan 0x04 = EOT).Coba versi 05AB1E
Bahasa min adalah Jelly:
Coba versi Jelly .
Bagaimana?
05AB1E:
Jeli:
sumber
C dan C ++ (gcc),
117107 byte-10 byte berkat @Steadybox!
Penjelasan: Dalam C,
auto c=.5
mendeklarasikan variabel integer dengan kelas penyimpanan otomatis (yang merupakan default), yang kemudian diinisialisasi ke 0, sedangkan dalam C ++ 11 menyatakan variabel ganda, yang diinisialisasi ke 0,5. Jadi nilai variabel akan benar dalam C ++ dan falsy dalam C.Bahasa C - maks: Cobalah online!
C ++ - bahasa min: Cobalah online!
sumber
auto c=.5
, lalu gunakanc
sebagai gantinyasizeof'a'-1
. Dalam C,auto c=.5
mendeklarasikan variabel integer dengan kelas penyimpanan otomatis (yang merupakan default), yang kemudian diinisialisasi ke 0, sedangkan dalam C ++ 11 menyatakan ganda, yang diinisialisasi ke 0,5. Jadi nilai variabel akan benar dalam C ++ dan falsy dalam C.Python 3 / Jelly , 42 byte
Menggunakan halaman kode Jelly untuk menyandikan file.
Byte mentah:
Keduanya mendefinisikan fungsi diad yang tidak disebutkan namanya.
Python (bahasa maks) melihat:
Tes sebagai Python .
Jelly (bahasa min) melihat:
Tes sebagai Jelly .
Bagaimana?
Jelly mengartikan 0x0a sebagai
½
, atom akar kuadrat sementara Python mengartikannya sebagai baris baru. Dalam Jelly 0x7f diartikan sebagai pemisahan antara tautan (fungsi) dan diwakili oleh baris baru atau pilcrow dalam codepage itu. Untuk Jelly, tautan terakhir adalah fungsi utama - di sini ia tidak memanggil tautan di atas (yang penerjemah masih perlu menguraikan dengan benar). Dalam Python 0x23,#
menginstruksikan bahwa apa pun setelahnya dan sebelum 0x0a, baris baru, adalah komentar.Kode Python yang dijalankan:
Kode Jelly yang dijalankan:
sumber
\x7f
dan\x04
untuk unsintables dalam Python one).Ruby / Python 3, 102 byte
Ruby mengembalikan max / sum, Python mengembalikan min / perbedaan. Input adalah objek array yang dibaca dari STDIN.
Cobalah online: Ruby
Cobalah online: Python
Kekhasan utama yang digunakan di sini adalah penggunaan kebenaran
0
di Ruby, yang palsu dalam Python. Hal lain yang layak disebutkan adalah bahwasort
fungsi Python memodifikasi daftar di tempat dan mengembalikanNone
, sementara Ruby tidak dan mengembalikan array yang diurutkan, maka perlu digunakanb or a
untuk mendapatkan min / maks.Python 3 diperlukan karena Python 2 mengeluh jika Anda mencoba memanggil
print
setelahor
pernyataan di baris terakhir.sumber
Java / AWK ,
219217212196 byteCobalah online!
Java menghasilkan max dan sum, AWK menghasilkan min dan selisih. Tidak ada output untuk keduanya jika inputnya identik.
Ini adalah polyglot pertama saya dan TIO pertama saya :)
sumber
JavaScript (ES6) / QBasic,
172171 byteBerdasarkan solusi saya ini, pertanyaan poliglot serupa .
Solusi ini juga menggunakan pendekatan komentar!
JavaScript adalah bahasa min. Dibutuhkan dalam array yang berisi angka sebagai input. Menghasilkan dua angka yang dipisahkan oleh
,
(angka 1 adalah nilai terkecil dari array-input dan angka ke-2 adalah perbedaan dari nilai-nilai terbesar dan terkecil dari array-input) denganalert()
ing. Tidakalert()
apa - apa jika angkanya sama. Anda dapat memanggil fungsi sepertif([100,40])
.QBasic adalah bahasa maks. Berkali-kali meminta input, dua kali. Mencetak jumlah terbesar dari input-angka serta jumlah input terbesar dan terkecil. Tidak
PRINT
apa - apa jika angkanya sama.Bagaimana cara kerjanya?
Dalam QBasic (bahasa keluarga BASIC terstruktur; itu tidak memerlukan nomor baris),
'
menandai awal dari komentar yang berlangsung sampai akhir baris. Sedangkan dalam JavaScript, ini menandai dimulainya string. Jadi, seluruh baris pertama ditandai sebagai komentar di QBasic tetapi dalam JavaScript, baris dieksekusi (dan baris ini berisi bagian JavaScript yang menghitung angka terkecil dan perbedaan angka terbesar dan terkecil, serta/*
di akhir yang memulai komentar untuk menyembunyikan sisa kode QBasic dari penerjemah JavaScript.)Kode dari baris kedua ke baris kedua terakhir berisi kode QBasic untuk menghitung angka terbesar dan jumlah angka terbesar dan terkecil (kode ini sangat jelas).
Baris terakhir berisi
'*/
.'
menyebabkan juru bahasa QBasic untuk menafsirkan kode berikut sebagai komentar, sedangkan dalam JavaScript, itu tidak memiliki efek apa pun karena merupakan bagian dari komentar (yang dimulai pada akhir baris pertama). Kode berikut (*/
) menyebabkan JavaScript untuk mengakhiri komentar yang dimulai pada baris pertama, tetapi tidak dieksekusi dalam QBasic karena QBasic menganggapnya sebagai bagian dari komentar.Uji Kasus
JavaScript (min-bahasa):
QBasic (maks-bahasa):
Pergi ke situs web ini . Salin tempel kode berikut dalam editor teks mereka:
Alasan mengapa nomor baris diperlukan adalah bahwa situs web yang saya sebutkan hanya mendukung bahasa BASIC yang tidak terstruktur. Dan situs web itu adalah satu-satunya penerjemah BASIC online yang layak yang dapat saya temukan. Namun, menjalankan kode yang ada di bagian atas posting (kode tanpa nomor baris) harus berfungsi dengan baik dalam setiap juru bahasa QBasic yang baik yang mendukung BASIC terstruktur dan
'
sebagai starter-komentar (beberapa tidak, kebanyakan melakukannya, kebanyakan)sumber