Apa yang Anda dapatkan ketika Anda mengalikan 6 dengan 9? (42)

60

Aku suka matematika. Tetapi saya tidak dapat menemukan kalkulator tunggal yang dapat dikalikan dengan benar. Mereka tampaknya melakukan semuanya dengan benar kecuali 6 * 9 (Ini pertanyaan untuk kehidupan, alam semesta, dan segalanya! Bagaimana mereka bisa salah?). Jadi saya ingin Anda semua menulis fungsi untuk saya yang dapat mengalikan 2 angka dengan benar (dan 6 * 9 sama dengan 42 bukannya 54. 9 * 6 sama dengan 54).

Oh, dan saya harus membangun sumber di Minecraft agar ... byte paling sedikit menang!

Rekap

  • Ambil 2 angka sebagai input (tipe tidak masalah, tetapi hanya 2 item yang akan dilewati, dan pesanan harus konsisten. Jadi, stream, dan array tidak masalah selama mereka mempertahankan urutan di mana mereka lewat. Yaitu, peta dimenangkan dapat bekerja karena tidak mempertahankan pesanan)
  • Keluarkan kelipatan dari kedua angka kecuali jika mereka adalah 6 dan 9, maka hasilkan 42 (urutan penting!)
    • PS. Saya tidak pernah benar-benar pandai menghitung, jadi saya pikir hanya bilangan bulat dari 0 hingga 99 adalah bilangan real (tipe yang digunakan tidak masalah)
  • Byte paling sedikit per bahasa menang!

Papan peringkat:

Tezra
sumber
1
@ JonathanAllan Ya, menambahkan aturan untuk itu.
Tezra
73
Secara kebetulan id pertanyaan memiliki 42dua kali di dalamnya.
Erik the Outgolfer
1
jika hanya bilangan bulat hingga 99 adalah bilangan real, maka misalnya 9 * 11 adalah prompt yang valid tetapi 10 * 10 tidak, kan?
the dark wanderer
14
@EriktheOutgolfer… dan 12 singkatan dari apa yang harus dikurangi jika input 6 dan 9.
Adám
11
@EriktheOutgolfer Bahkan jika Anda membaca ID mundur.
T. Sar - Pasang kembali Monica

Jawaban:

65

Mathematica, 15 byte

Hitungan byte mengasumsikan penyandian Windows ANSI (CP-1252).

6±9=42
±n__:=1n

Menentukan operator biner ±yang memecahkan masalah. Kami hanya mendefinisikan 6±9=42sebagai kasus khusus yang diutamakan dan kemudian menambahkan definisi mundur yang ±sama dengan multiplikasi. Yang terakhir menggunakan trik golf yang cukup menarik. Alasan mengapa ini bekerja sebenarnya cukup rumit dan kita perlu melihat urutannya . Urutan mirip dengan apa yang dikenal sebagai percikan dalam bahasa lain. Ini pada dasarnya adalah "daftar" tanpa pembungkus di sekitarnya. Misalnya f[1, Sequence[2, 3, 4], 5]benar-benar adil f[1, 2, 3, 4, 5]. Konsep penting lainnya adalah bahwa semua operator hanyalah gula sintaksis. Secara khusus, ±dapat digunakan sebagai operator unary atau biner dan mewakili kepala PlusMinus. Jadi ±xadalah PlusMinus[x]dan a±badalah PlusMinus[a,b].

Sekarang kita punya definisi ±n__. Ini adalah singkatan untuk mendefinisikan PlusMinus[n__]. Tetapi n__mewakili urutan argumen yang sewenang-wenang . Jadi ini sebenarnya menambahkan definisi untuk kegunaan biner (dan n-ary) PlusMinusjuga. Nilai dari definisi ini adalah 1n. Bagaimana ini melipatgandakan argumen? Nah, 1ngunakan perkalian implisit Mathematica dengan menyandingkan sehingga setara dengan 1*n. Tetapi *juga hanya singkatan Times[1,n]. Sekarang, nadalah urutan argumen. Jadi jika kita memohon a±bmaka ini akan benar-benar menjadi Times[1,a,b]. Dan itu baru saja a*b.

Saya pikir cukup rapi bagaimana penyalahgunaan sintaksis ini memungkinkan kita mendefinisikan operator biner menggunakan sintaksis unary. Kita sekarang bahkan dapat melakukan PlusMinus[2,3,4]untuk menghitung 24(yang juga dapat ditulis sebagai ±##&[2,3,4]atau 2±Sequence[3,4]tetapi itu hanya menjadi gila pada saat itu).

Martin Ender
sumber
Saya terutama menyukai bagaimana ini pada dasarnya merupakan tambalan untuk 'kalkulator' saya: 3 Untuk bersenang-senang, apakah ini juga berfungsi untuk *? : 3
Tezra
3
@ Teez dengan baik, *adalah operator bawaan , jadi Anda harus Unprotectmenambahkan definisi lebih lanjut, tetapi Unprotect[Times];6*9=42harus bekerja (meskipun tidak dapat menguji sekarang).
Martin Ender
1
Melakukan ini kepada operator * sangat jahat .... Saya menyukainya! >: 3
Tezra
1
Bagaimana saya dapat memilih ketika ada 42 lainnya?!? Inilah "+1 masa depan" saya yang akan diberikan setelah orang lain merusaknya! :-)
The Vee
1
@MartinEnder Aww; Tapi itu adalah Matematika terpendek, dan favorit saya sejauh ini. : 3
Tezra
25

C, 32 31 29 28 byte

-2 Berkat Digital Trauma
-1 terima kasih ke musicman523

#define f(a,b)a^6|b^9?a*b:42

Cukup mudah. Mendeklarasikan fungsi makro fyang membutuhkan dua argumen, adan b.
Jika aini 6dan badalah 9, kembali 42. Kalau tidak kembalikan ax b.

Cobalah online!

MD XF
sumber
2
Gunakan ^alih-alih ==dan sesuaikan logika sedikit: #define f(a,b)a^6||b^9?a*b:42- menyimpan 2 byte.
Digital Trauma
@DigitalTrauma Cheers: D
MD XF
1
Saya pikir Anda dapat menggunakan |daripada ||menyimpan byte lain, karena masih memiliki prioritas lebih rendah daripada^
musicman523
@ musicman523 Terima kasih! Editing.
MD XF
1
Anda harus memperbarui versi shortC Anda untuk melakukan perubahan ini juga
musicman523
17

JavaScript (ES6), 20 byte

x=>y=>x-6|y-9?x*y:42

Penjelasan:

Iff x == 6 dan y == 9, x-6|y-9akan menjadi 0 (salah), dan 42 akan menjadi hasilnya.

Potongan:

f=

x=>y=>x-6|y-9?x*y:42

console.log(f(6)(9));
console.log(f(9)(6));

Rick Hitchcock
sumber
4
Dilakukan dengan sangat baik; andai saja aku memikirkannya. +1
Shaggy
14

Python 2 , 30 29 byte

Terima kasih kepada Jonathan Allan karena telah menghemat satu byte!

lambda x,y:x*[y,7][6==x==y-3]

Cobalah online!

Adnan
sumber
2
Simpan satu byte menggunakan fakta bahwa 6 * 7 adalah 42:lambda x,y:x*[y,7][6==x==y-3]
Jonathan Allan
@ Jonathan Allan Ohh, itu rapi! Terima kasih! :)
Adnan
Solusi ini juga berfungsi di Python 3
AMK
Persis seperti yang saya dapat! Sepertinya tidak bisa menemukan cara untuk bermain golf lebih jauh.
FlipTack
12

05AB1E , 15 11 9 byte

-4 byte terima kasih kepada @Emigna

-2 byte terima kasih kepada @Adnan

P¹69SQi42

Cobalah online!

Bagaimana itu bekerja

P          # multiply input
 ¹         # push first number
  69       # the number 69
    S      # split per character
     Q     # equality for both inputs
       i42 # if so, print 42
           # otherwise print product
Neil A.
sumber
Anda bisa menghemat 4 byte dengan‚D96SQi42ëP
Emigna
@Emigna ya ... Kenapa ,di awal?
Neil A.
Memasangkan 2 input untuk membandingkan hanya sekali sebagai daftar.
Emigna
Saya kira 6Qs9Q*akan bekerja juga untuk jumlah byte yang sama.
Emigna
Mengubah format input menghemat 2 byte:P¹69SQi42
Adnan
10

Java (OpenJDK 8) ,24 22 byte

-2 byte terima kasih kepada @ OlivierGrégoire

a->b->a==6&b==9?42:a*b

Cobalah online!

Bashful Beluga
sumber
3
Selamat datang di PPCG! Saya tidak tahu banyak tentang Java, tetapi bisakah Anda menghapus System.out.println()panggilan dan membiarkan fungsinya mengembalikan hasilnya?
ETHproduk
2
@ LưuVĩnhPhúc tidak di Jawa, karena saya harus menulis (a^6|b^9)==0karena tidak ada perbandingan "berbeda dari 0" yang implisit. Potongan kode yang dihasilkan akan sepanjang 27 byte. Bagaimanapun, terima kasih atas sarannya, dan tolong katakan padaku jika saya salah tip.
Bashful Beluga
1
@ Pengendara tidak, itu tidak berfungsi seperti itu di java. Misalnya snippet int a = 5; if (a) do_some_stuff(); else do_other_stuff();memberikan Type mismatch: cannot convert from int to booleankesalahan kompilasi. Mereka harus dibuat secara eksplisit dengan nilai-nilai boolean; lihat SO dan ORACLE .
Bashful Beluga
3
Anda dapat menggunakan currying untuk cadangan satu byte, dan Anda dapat menyingkirkan titik koma seperti itu bukan bagian dari lambda untuk cadangan byte lain: a->b->a==6&b==9?42:a*b.
Olivier Grégoire
1
Hanya perhatikan mengapa 0 tidak salah. Java adalah tipe safe sehingga 0 adalah integer bukan boolean dan typecasting tidak aman tidak diperbolehkan sehingga Anda tidak dapat menggunakan nilai falsy
Martin Barker
6

Ruby, 24 byte

->a,b{a==6&&b==9?42:a*b}
dkudriavtsev
sumber
a^6|b^9<1mungkin bekerja sebagai boolean. Sulit untuk diuji pada ponsel cerdas saya.
Eric Duminil
1
@EricDuminil Sayangnya ungkapan itu diuraikan sebagai (((a^6)|b)^9), yaitu a.^(6).|(b).^(9), jadi itu tidak akan berfungsi dengan benar. a-6|b-9==0akan bekerja, tapi itu tidak lebih pendek.
Ventero
@Ventero: Saya tidak memikirkan hal itu. Terima kasih. a,b==6,9akan menyenangkan, tetapi juga tidak berhasil.
Eric Duminil
6

Brain-Flak , 158 154 148 140 138 126 byte

(({}<>)(((([()()()]<>)){})<({}{}({}))>{(()()()){}(<{}>)}{}))([()]{()(<{}>)}{})(({<{}>{}((<>))}{}){}<{}>{<({}[()])><>({})<>}{})

Cobalah online!

Penjelasan

Kode ini cukup sederhana. Kami membuat salinan dari dua item teratas di tumpukan, kami mengurangi 6 dari satu dan 9 dari yang lain. Kami kemudian mengambil notdari dua nilai tersebut. Kami andnilai-nilai itu, kalikan hasilnya dengan 12. Kalikan input dan kurangi dua hasil.

Wisaya Gandum
sumber
2
Anda mungkin ingin menggunakan huruf besar notdan and(atau memilihnya kembali), membaca deskripsi Anda sehingga membuat saya tersandung.
MD XF
6

Factorio, 661 bytes, 6 combinators dengan 9 koneksi

Ada satu combinator konstan yang diatur ke output A dan B. Ubah ini untuk mengatur input.

String cetak biru (0.15.18):

0eNrNVm2O2jAQvcv8rEKFvSHLRuqPtrfYCkUhGWAkYkfOGDVCOUBv0bP1JLWTLQuB3U0QbfcPYvzxZt68eYr3sNxaLA0phngPlGlVQfxtDxWtVbr1a1yXCDEQYwEBqLTwUY4Z5WgmmS6WpFLWBpoASOX4HWLRBG8C+EScKr6MIJtFAKiYmLCrpw3qRNliicaleK2SAEpduata+fQObiI+zgKo/R+XIyeDWbcrA18IG71NlrhJd+RuuytPmInby1ucyq+uyFScnPHakWHrVg4VdScmnz2fPzQhjnxQlKlpS4zhk7ugLZd2BCTu0NS8IbXusMvalWgVJyuji4SUA4OYjcWmS606nm31wv8YzI+7SS66axbusHxh1zeITGaJ21C4w41XtyeHHCXH9D+o8eVUjYd3qoY47bc86rWPo158/yze2iCqPtxsmHx3r9ry3E6ylU9cTUv0aITDygwPZaaGeFMgUzbM99NBg/aMegPnV+gxRg6oLtFNZFsjfLhiJB+huZn1B87O7Crr/0Pnfz11vug5/9ePn+/E+2Hf++4beNHV8uzgRWWica6ejnDKiraM5oWXwhtC2CcVDo+FxfAWDfwc3Y9jLv4288cj5qG8IXU3Ie2zKj56xgXgZrNqOURhKGfR/GE6nzfNb7OMaxo=

Outputnya adalah sinyal Z dan harus diambil dari deciders atas dan bawah.

Tangkapan layar

latias1290
sumber
waaa ... pertama kali saya melihat jawaban faktorio di ppcg xD
V. Courtois
2
Tidak cukup golf.
jimmy23013
6

Jelly , 8 7 byte

Vf96SạP

Input adalah sebagai array dari dua bilangan bulat: pertama operan kanan, lalu yang kiri.

Cobalah online!

Bagaimana itu bekerja

Vf96SạP  Main link. Argument: [b, a]

V        Cast [b, a] to string, then eval the resulting string.
         For [b, a] = [9, 6], this yields 96.
 f96     Filter with 96, yielding [96] if V returned 96, [] otherwise.
    S    Take the sum, yielding either 96 or 0.
      P  Compute the product of [b, a], yielding ba = ab.
     ạ   Compute the absolute difference of the results to both sides.
         When the sum is 0, this simply yields the product.
         However, when [b, a] = [9, 6], this yields 96 - 54 = 42.
Dennis
sumber
Ini memiliki -1 derajat kebebasan. Bagaimana kebetulan ini terjadi pada Anda?
lirtosiast
5

Factorio, 581 bytes, 3 combinators dengan 4 koneksi

String cetak biru (0.16.36):

0eNqllNtu4jAQht9lLldmldNCFWkvto/RCkUhGWAkYkfOGDVCefeOnV1Km7ACemPJ9vibf04+webgsLWkGfITUGV0B/nrCTra6fLgz7hvEXIgxgYU6LLxO2/HpeZFZZoN6ZKNhUEB6RrfII+HtQLUTEw44sKmL7RrNmjF4AyqsaIa7SVHQWs6eWq0dy+46OcvBT3ki1hc1GSxGi8T5XWwNYdig/vySPJYXvxFFnJXB0znT7dkOy4mYR3JspOTs6DRYoFHtD3vSe98XP/CFZ9xtsqe0mW29KdNW9qgOYffgjCOW3eHk+eR3fai1WkuttY0BWlhQM7W4TC61mPAIYzYLxbry6yS7FKxJFs54rANFdhZRP3VMBnWQk08ZvZ+ChpExqSCyX9bYVLCRfxRwbmabenAaK+03rX0/RnT5z7VJbroQnUH7HkGlq7OsDFtc8WYzWJ8WxbTs4rSEu8bZKpuGoXopkn4gH5vGEKiO/SMO5vbtCgDEjTCjwcm5AWGO4ZgknX16Tq7OhRfHiZXypU91PTRd6ZYdIjo8PnmF3+1AvmfuuBq+bRKYmnWKM2G4R1hAPnz

Combinator konstan kiri bawah harus diatur ke output A dan B sebagai input. Outputnya adalah sinyal Z dari kombinator aritmatika kanan bawah.

masukkan deskripsi gambar di sini

Top left: 2147483640 A, 2147483637 B
Top right: If everything = 2147483646 output B, input count
Bottom left: (input) A, (input) B
Bottom right: A * B -> Z
jimmy23013
sumber
5

MATL , 11 byte

[BE]=?42}Gp

Input adalah array dengan dua angka.

Cobalah online!

Penjelasan

[BE]    % Push array [6, 9]
=       % Implicit input: array of two numbers. Compare with [6, 9] element-wise
?       % If the two entries are true
  42    %   Push 42
}       % Else
  G     %   Push input
  p     %   Product of array
        % Implicit end. Implicit display
Luis Mendo
sumber
4

GW-BASIC , 55 byte

1INPUT A:INPUT B
2IF A=6THEN IF B=9THEN ?"42":END
3?A*B

Keluaran:

keluaran

Mesin pertama di pcjs memiliki IBM BASIC, yang praktis adalah hal yang sama. Untuk mengujinya, pergilah ke sana, tekan Runmesin, Tekan Enter- Enterdan ketik BASICAuntuk masuk ke mode BASIC. Kemudian masukkan kode sumber (ini akan secara otomatis mencetak untuk Anda), ketik RUN, masukkan dua bilangan bulat, dan selesai!

MD XF
sumber
3
Apakah Anda yakin bytecount sudah benar? GW-BASIC menggunakan penyandian di mana beberapa kata, seperti INPUT, dikodekan dalam lebih sedikit byte daripada karakter yang menyarankannya. Oleh karena itu penghitungan tampaknya tinggi bagi saya.
@ ais523 Yah, saya menjalankannya wc, dan saya mendapat 55 ... Copy-paste ke emulator saya dan itu memiliki perilaku yang diharapkan.
MD XF
3
Benar, maksud saya adalah bahwa Anda mungkin mencetak kiriman Anda lebih tinggi dari yang seharusnya. Dapatkan GW-BASIC untuk menyimpan file, dan kemudian lihat ukuran file yang dihasilkan pada disk; itu harus lebih kecil.
@ ais523 Disimpan sebagai OUT.BAS: i.stack.imgur.com/32eH1.png Bytecount adalah nilai tengah.
MD XF
OK, saya tidak mengharapkan itu, tapi saya kira ini adalah pencucian dalam situasi ini. (Atau mungkin ada lebih dari satu format simpan?)
4

Periksa , 34 33 byte

.:+&>#v
#>42#v#9-!\>6-!*?
 d* ##p

Cek esolang baruku. Menggunakan kombinasi semantik 2D dan 1D.

Input adalah dua angka yang dilewatkan melalui argumen baris perintah.

Penjelasan

Tumpukan dimulai dengan argumen baris perintah di atasnya. Mari kita panggil argumen adan b.

Bagian pertama .:+&,, pada dasarnya menduplikasi stack, meninggalkannya sebagai a, b, a, b. >mendorong 0 ke tumpukan (itu adalah bagian dari literal numerik yang diselesaikan oleh 9).

#beralih ke semantik 2D, dan vmengalihkan IP ke bawah. IP segera berjalan menjadi #, yang beralih kembali ke semantik 1D lagi.

9-!memeriksa apakah bsama dengan 9 (dengan mengurangi 9 dan mengambil TIDAK logis). \>6-!kemudian periksa apakah asama dengan 6. Tumpukan sekarang berisi a, b, 1, 1jika dan hanya jika b==9dan a==6. Mengalikan dengan *mengambil logika DAN dari dua nilai ini, memberi a, b, 1jika inputnya 6dan 9, dan a, b, 0sebaliknya.

Setelah ini, IP berjalan menjadi ?. Ini akan beralih ke mode 2D jika nilai tumpukan teratas bukan nol, dan jika tidak akan berlanjut dalam mode 1D.

Jika nilai tumpukan teratas adalah 1, ini berarti bahwa nilai tumpukan lainnya adalah 6dan 9, jadi kami mendorong 42 ke tumpukan dengan >42dan kemudian bergerak ke bawah ke yang kedua #pada baris terakhir.

Jika nilai tumpukan teratas adalah 0, maka eksekusi turun ke baris berikutnya. dmenghapus 0(karena ?tidak melakukannya), dan kemudian kita mengalikan dua input dengan *. The ##switch dan keluar dari mode 2D, melakukan apa-apa.

Cabang-cabang sekarang telah bergabung lagi. Tumpukan berisi 6, 9, 1, 42, atau a*b. pmencetak nilai tumpukan teratas dan kemudian program berakhir, membuang sisa tumpukan.

Buah Esolanging
sumber
Ini terlihat seperti bahasa yang bagus!
Bukan sebatang pohon
3

JavaScript (ES6), 25 byte

x=>y=>[x*y,42][x==6&y==9]
Shaggy
sumber
3

Python 3 , 36 33 byte

lambda x,y:42if x==6==y-3else x*y

Cobalah online!

Martmists
sumber
1
Versi alternatif, ukuran yang sama: lambda x:x[0]*x[1]if x!=(6,9)else 42. Satu-satunya perbedaan adalah tipe input.
musicman523
Nevermind - versi edit Anda lebih pendek :)
musicman523
Kode yang Anda posting tidak benar-benar berfungsi, jadi saya beralih ke versi yang berfungsi di TIO yang Anda tautkan.
ETHproduk
Ini bekerja untuk saya: Dalam [1]: f = lambda x, y: 42jika 6 == x == y-3else x * y Dalam [2]: f (6,9) Keluar [2]: 42 Dalam [3] ]: f (9,6) Keluar [3]: 54 @ETHproduksi
Martmists
@Martmists Anda kehilangan ruang, karena kode Andaf=lambda x,y:42if6==x==y-3else x*y
ETHproduksi
3

APL (Dyalog) , 10 byte

×-12×6 9≡,

Cobalah online!

× produk (dari argumen)

- minus

12× dua belas kali

6 9≡ apakah (6,9) identik dengan

, Rangkaian (dari argumen)

Adm
sumber
Oh wow saya baru saja melihat ini dan jawaban J saya persis sama dengan ini: / kecuali satu byte lagi
Conor O'Brien
@ ConorO'Brien Masuk akal. J dan tacit APL sebagian besar setara, simpan untuk multi-char primitif J (dan membutuhkan Cap untuk puncak terakhir).
Adám
3

R, 41 Saya pikir saya tidak tahu bagaimana cara menghitung byte. Saya baru: D

function(a,b){

if(a==6&b==9){42} else {a*b}

}

Saya mendefinisikan funtion yang argumennya a dan b dalam urutan ini . Jika a sama dengan 6 dan b sama dengan 9, ia mengembalikan 42, jika tidak, a kali b

R17
sumber
Selamat datang di situs ini! :)
DJMcMayhem
Selamat datang. Mempertimbangkan juga baris baru dan spasi juga. Dalam kasus Anda, jika Anda menghapus baris baru dan spasi (yang Anda bisa) hanya 41.
Masclins
1
Anda dapat memotong dua byte dengan menggunakanifelse(a==6&b==9,42,a*b)
Masclins
Anda dapat memotong semuanya menjadi 33 byte sebagai function(a,b)`if`(a-6|b-9,a*b,42).
rturnbull
Ini hanya 41 byte setelah Anda menghapus spasi yang tidak dibutuhkan, sampai saat itu, itu 47 byte.
Pavel
3

SPL , 356 byte

a.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]Ajax:Listen to your heart!Puck:Listen to your heart!Are you as big as the sum of a big big big cat and a cat?If so, am I as big as the sum of a big big cat and a big cat?If so, you are as big as the product of I and the sum of I and a cat.If not, you are as big as the product of you and I.Open your heart

Dengan baris dan spasi baru:

a.                       *Title*
Ajax,.                   *Declare variable Ajax*
Puck,.                   *Declare variable Puck*
Act I:.
Scene I:.
[Enter Ajax and Puck]
Ajax: Listen to your heart!                  *Set Puck's value to user input*
Puck: Listen to your heart!                  *Set Ajax's value to user input*
      Are you as big as the sum of a big 
       big big cat and a cat?                *Is Ajax=9?* 
      If so, am I as big as the sum of a 
       big big cat and a big cat?            *Is Puck=6?* 
      If so, you are as big as the product 
       of I and the sum of I and a cat.      *If so, set Ajax=42* 
      If not, you are as big as the product 
       of you and I.                         *If not set Ajax=(Ajax)(Puck)*
      Open your heart                        *Print Ajax's value*
William Taylor
sumber
3

Japt , 13 11 12 byte

¥6&V¥9?42:N×

Cobalah online

  • 2 1 byte disimpan berkat obarakon.
Shaggy
sumber
1
N¬¥69?42:N×untuk 11 byte
Oliver
Bagus, @obarakon.
Shaggy
3

ML Standar (MLton) , 22 20 byte

Disimpan 2 byte berkat @Laikoni!

fun$6 $9=42| $x y=x*y

Cobalah online!

Ini adalah jenis hal yang dimaksudkan SML, itulah sebabnya ia mengalahkan shortC dan Python.

Versi lama terlihat jauh lebih bagus. : P

musicman523
sumber
20 byte: Cobalah online!
Laikoni
@Laikoni Wow, saya tidak tahu Anda bisa menggunakan $sebagai pengenal! Mengapa ini tidak dikompilasi jika Anda menghapus ruang antara |dan $?
musicman523
SML membedakan pengidentifikasi alfanumerik dan simbolik , yang bisa sangat berguna untuk bermain golf. |$diuraikan sebagai pengidentifikasi simbolis tunggal, jadi semuanya rusak. Saya berencana untuk menulis pertanyaan kiat untuk SML segera dan menambahkan jawaban tentang kedua jenis pengidentifikasi.
Laikoni
2

Pyth, 12 byte

-*FQ*12q(6 9

Cobalah online

Penjelasan

 -*FQ*12q(6 9
  *FQ             Take the product
        q(6 9)Q   Check if the (implicit) input is (6, 9)
 -   *12          If so, subtract 12
Mnemonik
sumber
Solusi cerdas. Saya mencobanya dengan pernyataan terner di 15:AQ?&q6Gq9G42*GH
Tornado547
2

Retina , 36 byte

^6 9$
6 7
\d+
$*
1(?=1* (1+))|.
$1
1

Cobalah online! Perkalian unary standar, hanya mengubah input untuk menangani kasus khusus.

Neil
sumber
2

Jelly , 10 byte

⁼6,9ȧ42ȯ⁸P

Tautan monadik mengambil daftar dua angka.

Cobalah online!

Bagaimana?

⁼6,9ȧ42ȯ⁸P - Link: list of numbers [a,b]
 6,9       - 6 paired with 9, [6,9]
⁼          - equals? (non-vectorising) (1 or 0)
     42    - literal answer, 42
    ȧ      - logical and               (42 or 0)
        ⁸  - link's left argument, [a,b]
       ȯ   - logical or                (42 or [a,b])
         P - product                   (42 or a*b)
Jonathan Allan
sumber
Anda bisa saja digunakan ?, seperti yang saya lakukan. ;)
Erik the Outgolfer
Ah karena ,khusus karena merupakan bagian dari pola regex literal, sehingga 6,9diuraikan sebagai token tunggal dan cepat $dapat menggabungkannya . Apakah Anda beralasan, atau hanya mencobanya dan perhatikan bahwa itu berhasil?
Jonathan Allan
1
Saya beralasan itu.
Erik the Outgolfer
2

SILOS , 81 67 byte

readIO
J=i
readIO
a=(J-6)^2+(i-9)^2
a/a
a-1
a*12
x=J*i+a
printInt x

Cobalah online!

Dalam beberapa hal fungsi tambahan sebagai gerbang NAND yang menarik di SILOS.

-14 byte terima kasih kepada @Leaky Nun

Intinya kita membuat angka "a" yaitu 0 (falsy) iff j adalah 6 dan i = 9, maka kita membaginya dengan sendiri kurangi satu dan kalikan dengan 12 untuk menambah produk kita.

Jika "a" adalah 1 setelah mengurangi satu dan mengalikan, itu menjadi no-op, namun dalam kasus di mana a adalah 0, 0/0 diam-diam melempar kesalahan (yang ditangkap secara otomatis secara ajaib) a menjadi 0, dan kemudian menjadi -1 dan kami akhirnya mengurangi 12 dari produk kami.

Rohan Jhunjhunwala
sumber
69 byte
Leaky Nun
67 byte
Leaky Nun
@ LeakyNun ooh, itu pintar.
Rohan Jhunjhunwala
Sebenarnya 0/0menjadi 0.
Leaky Nun
@ LeakyNun Saya bermaksud mengatakan menjadi 0, dan kemudian dikurangi. Pemasangan.
Rohan Jhunjhunwala