"Matriks naik" adalah matriks tak terbatas dari bilangan bulat (termasuk 0) di mana setiap elemen adalah elemen terkecil yang tersedia yang belum pernah digunakan sebelumnya pada baris dan kolom masing-masing:
| 1 2 3 4 5 6 ...
--+----------------
1 | 0 1 2 3 4 5 ...
2 | 1 0 3 2 5 4 ...
3 | 2 3 0 1 6 7 ...
4 | 3 2 1 0 7 6 ...
5 | 4 5 6 7 0 1 ...
6 | 5 4 7 6 1 0 ...
. | ...............
Tugas Anda adalah menulis program yang akan menampilkan elemen yang ditemukan di baris dan kolom yang ditentukan oleh input. (input dan output standar)
Kasus uji:
5 3 -> 6
2 5 -> 5
Aturan Golf berlaku — kode terpendek menang.
PS Bahkan jika ini memiliki sifat algoritmik kode dapat sangat, sangat singkat.
EDIT: Saya tidak berharap melihat solusi xor begitu awal. Saya benar-benar berharap melihat 10 posting dengan pendekatan algoritmik dan MAKA solusi xor. Sekarang, mengingat bahwa tidak terlalu menyenangkan untuk melihat bagaimana menulis xor dalam berbagai bahasa, saya sarankan Anda juga mencoba pendekatan algoritmik.
Jadi, ya, saya pikir tidak ada yang bisa mengalahkan tanda 5 karakter sekarang — oleh karena itu saya mengucapkan selamat kepada Ilmari Karonen untuk solusi paling cerdas dan terpendek. Tapi ada tantangan baru di depan: tulis solusi algoritmik terpendek .
sumber
Jawaban:
GolfScript, 5 karakter
Memang, tugas ini sangat sederhana begitu Anda mengenali polanya. Satu-satunya canggung adalah pengindeksan berbasis 1 - jika indeks input berbasis nol, solusi 2 karakter ini sudah cukup:
Untuk menjelaskan hal ini kepada pembaca yang tidak terbiasa dengan GolfScript,
~
perintah ini mengevaluasi input, meninggalkan dua angka di tumpukan.^
kemudian XORs dua angka paling atas pada tumpukan bersama-sama, meninggalkan hasil untuk output. Untuk menangani input berbasis 1, diperlukan dua perintah lagi:(
mengurangi angka paling atas pada stack menjadi satu, sementara\
menukar dua item teratas pada stack.sumber
^
? Saya merujuk ke halaman Built-in GolfScript dan perbedaan Symmetric ; menggunakan operasi ini dengan dua set array masuk akal, tapi saya tidak mengerti cara kerjanya hanya untuk dua angka terpisah.^
operator mengembalikan bitorenya XOR .Mathematica
1044Edit
Tanggapan pertama saya didasarkan pada kesalahpahaman tentang sifat tantangan, seperti dicatat oleh Ilmari. Ini percobaan lain.
Pemakaian
sumber
K, 31
Mencuri logika XOR Ilmari Karonen, yang tidak akan pernah saya lihat sendiri.
sumber
PHP, 38
Hanya implementasi sederhana XOR Ilmari Karonen
<?php echo --$_GET['a']^--$_GET['b']?>
Pemakaian:
... / xor.php? a = 4 & b = 7
akan mencetak 6
sumber
Haskell 174
Kupikir aku akan membuat solusi yang tidak bergantung pada XOR. Terlalu malas untuk bermain golf dengan benar.
Sunting: Saya menyadari sehari kemudian bahwa ini hanya menghitung XOR. Jadi jika ini dianggap sebagai solusi algoritmik, maka Ilmari Karonen juga harus melakukannya.
sumber
Python 2, 36
Saya pikir karena saya baru mulai belajar Python bahwa ini akan menjadi waktu yang tepat untuk mengirimkan jawaban pertama saya menggunakannya (dan tidak ada yang menjawab menggunakan Python) dan mungkin saya bisa menerima umpan balik.
Terima kasih @IlmariKaronen untuk pintasan yang sangat keren.
Terima kasih @Gareth untuk kode di bawah ini.
Python 3, 56
Program asli yang saya tulis.
IDEONE dengan 2 dan 5
IDEONE dengan 3 dan 3
sumber
input
sudah mengevaluasi input sehinggaint()
seharusnya tidak perlu. Juga karena Anda mendapatkan int langsung dariinput()
Anda bisa-1
langsung melakukannya . Anda juga dapat menyingkirkan variabel perantara sepenuhnya dan langsung melakukannyaprint(input()-1^input()-1)
. Seperti apakah perlu atau tidak impor - pengguna Python lain di situs ini tidak memasukkannya untuk program yang digunakaninput()
, tapi saya bukan programmer Python jadi saya tidak bisa mengatakan apakah itu perlu atau tidak.print(input()-1^input()-1)
. Terima kasih atas bantuannya!sys
?MATL , 2 byte
Cobalah online!
MATL meng-post-date tantangan beberapa tahun, tetapi, hei, pengindeksan berbasis 1 alami dan fungsi bitwise xor menjadikan ini bagus dan rapi!
sumber
Perl 5 , 12 byte
Cobalah online!
sumber
Javascript 13 byte
sumber
Japt , 5 byte
Cobalah online!
sumber