6 ile 9'u çarptığınızda ne elde edersiniz? (42)


60

Matematiği seviyorum. Ancak doğru şekilde çarpılabilecek tek bir hesap makinesi bulamıyorum. 6 * 9 dışında her şeyi doğru buluyorlar gibi görünüyor (Bu, yaşamın, evrenin ve her şeyin sorunudur! Bunu nasıl yanlış yapabilirler ?!). Bu yüzden hepinizin benim için 2 sayıyı doğru şekilde çarpabilecek bir fonksiyon yazmasını istiyorum (ve 6 * 9, 54 yerine 42'ye eşittir. 9 * 6, hala 54'e eşittir).

Oh, ve kaynağı Minecraft'ta oluşturmak zorunda kalacağım, böylece en az bayt kazanacak!

tekrarlamak

  • Girdi olarak 2 sayı alın (tür önemli değil, ancak yalnızca 2 öğe geçilecek ve siparişin tutarlı olması gerekir. Bu nedenle akışlar ve diziler girdikleri sırayı korudukları sürece tamamdır. çalışmıyor çünkü sırasını korumuyor)
  • Her ikisi de 6 ve 9 değilse, birden fazla çıktı alın, sonra çıktı 42 (sipariş önemlidir!)
    • PS. Sayma konusunda hiç iyi olmadım, bu yüzden sadece 0 ile 99 arasında tam sayılar gerçek sayılardır (kullanılan tür önemli değildir)
  • Dil başına en az bayt kazanır!

Liderler Sıralaması:


1
@JonathanAllan Evet, bunun için kurallar ekledi.
Tezra

73
Tesadüfen, soru kimliği içinde 42iki kez var.
Outgolfer Erik,

1
eğer sadece 99'a kadar olan tamsayılar gerçek sayılarsa, örneğin 9 * 11 geçerli bir bilgi istemidir ancak 10 * 10 değildir, doğru mu?
karanlık gezgin

14
@EriktheOutgolfer… ve 12, giriş 6 ve 9 ise ne çıkarılacağını gösterir.
Adám

11
@EriktheOutgolfer Kimliği geriye doğru okuduysanız bile.
T. Sar - Monica

Yanıtlar:


65

Mathematica, 15 bayt

Bayt sayısı, Windows ANSI kodlamasını (CP-1252) varsayar.

6±9=42
±n__:=1n

±Sorunu çözen bir ikili operatör tanımlar . Biz sadece 6±9=42önceliği olan özel bir durum olarak tanımlıyoruz ve sonra ±çarpmaya eşit olan bir geri dönüş tanımı ekliyoruz . İkincisi oldukça ilginç bir golf hilesi kullanır. Bunun işe yaramasının sebebi aslında oldukça ayrıntılı ve dizilere bakmamız gerekiyor . Bir dizi, diğer dillerde bir uyarıyla bilinenlere benzer . Temelde etrafındaki herhangi bir sarıcı olmadan bir "liste". Örneğin f[1, Sequence[2, 3, 4], 5]gerçekten sadece f[1, 2, 3, 4, 5]. Diğer önemli kavram, tüm operatörlerin sadece sözdizimsel şeker olmasıdır. Özellikle, ±bir tekli veya ikili operatör olarak kullanılabilir ve kafayı temsil eder PlusMinus. Yani ±xbir PlusMinus[x]ve a±bbir PlusMinus[a,b].

Şimdi tanımımız var ±n__. Bu tanımlamanın kısaca PlusMinus[n__]. Ancak n__keyfi bir argüman dizisini temsil eder . Yani bu aslında ikili (ve n-ary) kullanım için bir tanım ekler PlusMinus. Bu tanımın değeri 1n. Bu, argümanları nasıl çarpıştırır? Peki, 1nMathematica'nın örtük çarpımını yan yana kullanmasıyla eşdeğerdir 1*n. Ama *aynı zamanda sadece steno Times[1,n]. Şimdi, nargümanlar dizisidir. Öyleyse çağırırsak, a±bbu aslında olacak Times[1,a,b]. Ve bu sadece a*b.

Bu sözdizimi suiistimalinin, unary sözdizimini kullanan bir ikili işleci tanımlamamıza nasıl izin verdiğini oldukça açık buluyorum. Şimdi PlusMinus[2,3,4]hesaplama yapmak için bile yapabiliriz 24(ki bu da olarak da yazılabilir ±##&[2,3,4]ya 2±Sequence[3,4]da bu sadece delirir).


Özellikle bunun 'hesap makinem' için nasıl bir yama olduğunu seviyorum: 3 Eğlence için, bu da * için çalışıyor mu? : 3
Tezra

3
@Tezra iyi, *yerleşik bir operatör, bu nedenle Unprotectdaha fazla tanım eklemek için buna ihtiyacınız olacak, ancak Unprotect[Times];6*9=42çalışmalı (şu anda test edemem).
Martin Ender

1
* Operatöre bunu yapmak çok kötüdür .... Bayıldım! >: 3
Tezra

1
Tam olarak 42 tane olduğunda nasıl oy kullanabilirim?!? İşte başkası tarafından kesildikten sonra verilecek "gelecek +1" :-)
The Vee

1
@MartinEnder Aww; Ama bu en kısa Mathematica, ve şimdiye kadarki favorim. : 3
Tezra


25

C, 32 31 29 28 bayt

-2 Digital Trauma
-1 sayesinde musicman523 sayesinde

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

Oldukça basit. fİki argüman alan bir makro fonksiyonunu bildirir ave b.
Eğer abir 6ve bolduğu 9, dönmek 42. Aksi takdirde ax döndürür b.

Çevrimiçi deneyin!


2
Kullanım ^yerine ==ve mantık biraz ayarlayın: #define f(a,b)a^6||b^9?a*b:42- 2 bayt kaydeder.
Dijital Travma

@DigitalTrauma Şerefe: D
MD XF

1
Sanırım bir öncekinden daha düşük önceliğe sahip olduğundan, başka bir bayt kaydetmek |yerine kullanabileceğinizi düşünüyorum||^
musicman523

@ musicman523 Teşekkürler! Düzenleme.
MD XF

1
Bu değişiklikleri yapmak için shortC versiyonunuzu da güncellemelisiniz
musicman523

17

JavaScript (ES6), 20 bayt

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

Açıklama:

Iff x == 6 ve y == 9, x-6|y-90 olacaktır (falsy) ve 42 sonuç olacaktır.

Parça, parçacık:

f=

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

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


4
Çok iyi yapmışsın; keşke bunu düşünebilseydim. +1
Shaggy

14

Python 2 , 30 29 bayt

Bir bayt tasarrufu için Jonathan Allan teşekkürler !

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

Çevrimiçi deneyin!


2
6 * 7'nin 42 olduğu gerçeğini kullanarak bir bayt kaydedin :lambda x,y:x*[y,7][6==x==y-3]
Jonathan Allan

@ JonathanAllan Ohh, çok temiz! Teşekkürler! :)
Adnan

Bu çözüm aynı zamanda Python 3
AMK'da

Tam olarak ne aldım! Daha fazla golf oynamak için herhangi bir yol bulamıyorum.
FlipTack

12

05AB1E , 15 11 9 bayt

@Emigna sayesinde -4 bayt

@Adnan sayesinde -2 bayt

P¹69SQi42

Çevrimiçi deneyin!

Nasıl çalışır

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

4 byte ile kaydedebilirsiniz‚D96SQi42ëP
Emigna

@Emigna huh ... Neden ,başlangıçta?
Neil A.

2 girişi eşleştirmek yalnızca bir kez liste halinde karşılaştırmak için.
Emigna

Sanırım 6Qs9Q*aynı bayt sayısı için de işe yarardı.
Emigna

Giriş biçimini değiştirmek 2 bayt kazandırır:P¹69SQi42
Adnan

10

Java (OpenJDK 8) ,24 22 bayt

@ OlivierGrégoire sayesinde -2 bayt

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

Çevrimiçi deneyin!


3
PPCG'ye Hoşgeldiniz! Java hakkında fazla bir şey bilmiyorum, ancak System.out.println()aramayı kaldırabilir ve fonksiyonun sonucu döndürmesine izin verebilir misiniz ?
ETHproductions

2
@ LưuVĩnhPhúc Java'da değil, çünkü (a^6|b^9)==0"0'dan farklı" bir karşılaştırma olmadığı için yazmak zorunda kalacağım . Ortaya çıkan kod pasajı 27 bayt uzunluğunda olacaktı. Her neyse, öneri için teşekkürler ve ipucunu yanlış anladıysam lütfen söyle.
Bashful Beluga,

1
@Riker hayır, java'da böyle çalışmaz. Snippet int a = 5; if (a) do_some_stuff(); else do_other_stuff();bir Type mismatch: cannot convert from int to booleanderleme hatası veriyor . Açıkça boolean değerlerle yapılmaları gerekir; bakınız SO ve ORACLE .
Bashful Beluga

3
Tek bir bayt yedek currying kullanabilir ve başka byte harcayacak lambda bir parçası değil gibi noktalı virgül kurtulmuş oluruz: a->b->a==6&b==9?42:a*b.
Olivier Grégoire

1
0'ın neden yanlış olmadığı hakkında bir not. Java güvenli olduğundan, 0 bir boolean değildir ve güvensiz bir yazımlamaya izin verilmeyen bir tamsayıdır, bu nedenle sahte değerleri kullanamazsınız
Martin Barker

6

Ruby, 24 bayt

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

a^6|b^9<1Boolean olarak çalışabilir. Akıllı telefonumda test etmek zor.
Eric Duminil

1
@EricDuminil Maalesef bu ifade (((a^6)|b)^9), yani a.^(6).|(b).^(9)düzgün bir şekilde çalışmadığı için ayrıştırıldı . a-6|b-9==0çalışırdı, ama bu daha kısa değil.
Ventero

@Ventero: Bunu düşünmedim. Teşekkürler. a,b==6,9iyi olurdu, ama işe yaramadı.
Eric Duminil

6

Brain-Flak , 158 154 148 140 138 126 bayt

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

Çevrimiçi deneyin!

açıklama

Bu kod oldukça basit. Yığındaki en üstteki iki öğenin kopyasını alıyoruz, 6'dan birini, diğerini ise 9'dan alıyoruz. Sonra notiki değerden birini alırız. Biz andbu değerleri biz sonucu 12 ile çarpıyoruz. Girdileri çarpın ve iki sonucu çıkarın.


2
Sen yararlanmak isteyebilirsiniz notve and, açıklamanızı okuma yerine beni takıldı (veya onları backtick).
MD XF

6

Factorio, 661 byte, 9 bağlantılı 6 birleştirici

A ve B çıkışlarına ayarlanan bir sabit birleştirici vardır. Girişi ayarlamak için bunları değiştirin.

Plan dizesi (0.15.18):

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

Çıktı Z sinyalidir ve üst ve alt karar alıcılardan alınmalıdır.

Ekran görüntüsü


waaa ... ilk defa ppcg xD
V. Courtois


6

Jöle , 8 7 bayt

Vf96SạP

Girdi iki tamsayının dizisidir: önce sağ işlenen, sonra soldaki.

Çevrimiçi deneyin!

Nasıl çalışır

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.

Bunun -1 serbestlik derecesi var. Bu tesadüfler size nasıl geliyor?
lirtosiast

5

Factorio, 581 bayt, 4 bağlantılı 3 birleştirici

Plan dizesi (0.16.36):

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

Sol alt sabit birleştirici, giriş olarak A ve B çıkışına ayarlanmalıdır. Çıkış, sağ alt aritmetik birleştiriciden Z sinyalidir.

görüntü tanımını buraya girin

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

5

MATL , 11 bayt

[BE]=?42}Gp

Giriş, iki sayının bulunduğu bir dizidir.

Çevrimiçi deneyin!

açıklama

[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

4

GW-BASIC , 55 bayt

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

Çıktı:

çıktı

PCJ'lerdeki ilk makine , pratik olarak aynı olan IBM BASIC'e sahip. Bunu test etmek için oraya gidin, Runmakineye basın, Enter- tuşuna basın Enterve BASICABASIC moduna geçmek için yazın . Ardından kaynak kodunu girin (sizin için otomatik olarak yazdırılır), yazın RUN, iki tam sayı girin ve bitti!


3
Bayt sayısının doğru olduğundan emin misin? GW-BASIC, bazı kelimelerin, INPUTonları oluşturan karakterlerden daha az byte olarak kodlandığı bir kodlama kullanır . Bu nedenle sayım benim için yüksek gözüküyor.

@ ais523 Eh, ben üzerinden koştum wcve ben 55 var ... Ben taklitçime kopyala yapıştırılmış ve beklenen davranışa sahipti.
MD XF

3
Doğru, demek istediğim, muhtemelen gönderiminizi olması gerekenden daha yüksek puan alıyorsunuz. Dosyayı kaydetmek için GW-BASIC'i alın ve ardından elde edilen dosyanın boyutuna bakın; daha küçük olmalı.

@ ais523 Olarak kaydedildi OUT.BAS: i.stack.imgur.com/32eH1.png Bytecount, orta değerdir.
MD XF

Tamam, bunu beklemiyordum, ama sanırım bu durumda bir yıkama. (Ya da belki birden fazla kayıt formatı var?)


4

Çek , 34 33 bayt

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

Çek benim yeni esolang'ım. 2B ve 1B anlambiliminin bir kombinasyonunu kullanır.

Giriş, komut satırı argümanlarından geçen iki sayıdır.

açıklama

Yığın, üzerinde komut satırı argümanları ile başlar. Argümanları ave diyelim b.

İlk kısım, .:+&aslında yığını bırakarak yığını çoğaltır a, b, a, b. >0'ı yığına iter (tamamlanan sayısal bir değişmezin bir parçasıdır 9).

#2B anlambilimine geçer ve vIP'yi aşağı doğru yönlendirir. IP, hemen #tekrar 1D anlamına geri dönen bir a'ya girer.

9-!b9'a eşit olup olmadığını kontrol eder (9'u çıkararak ve mantıksal NOT alarak). \>6-!Daha sonra kontrol eder ayığın şimdi içerir 6'ya eşittir a, b, 1, 1, ancak ve ancak b==9ve a==6. İle çarparak *veren mantıksal AND bu iki değerin alır a, b, 1girdiler olsaydı 6ve 9ve a, b, 0aksi.

Bundan sonra IP bir ?. Üst yığın değeri sıfır değilse, 2B moduna geçecek, aksi halde 1D modunda devam edecektir.

Üst yığın değeri ise 1, bu diğer yığın değerlerinin olduğu anlamına gelir 6ve 9bu yüzden 42'yi yığına itip >42sonra #da son satırdaki ikinciye aşağı doğru hareket ettiririz .

Üst yığın değeri ise 0, yürütme bir sonraki satıra doğru aşağı iner. dkaldırır 0( ?yapmadığı gibi ) ve sonra iki girişi ile çarpıyoruz *. ##Anahtarlar ve 2D modunda dışına, hiçbir şey yapmadan.

Şubeler şimdi yeniden katıldı. Yığın ya içerir 6, 9, 1, 42ya da a*b. püst yığın değerini yazdırır ve ardından program sona ererek yığının kalanını atar.


Bu şık bir dile benziyor!
Ağaç değil


3

Python 3 , 36 33 bayt

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

Çevrimiçi deneyin!


1
Alternatif versiyon, aynı boyutta: lambda x:x[0]*x[1]if x!=(6,9)else 42. Tek fark giriş türüdür.
musicman523

Nevermind - Düzenlenen sürümünüz daha kısa :)
musicman523

Gönderdiğiniz kod aslında çalışmıyor, bu yüzden bağlandığınız TIO’nun çalışma sürümüne geçtim.
ETHproductions

Benim için çalışıyor: [1] 'de: f = lambda x, y: 42if 6 == x == y-3else x * y İçinde [2]: f (6,9) Çıkışı [2]: 42 İçinde [3 ]: f (9,6) Out [3]: 54 @ETHroductions
Martmistler

@Martmists O zamanlar bir boşluk eksikti, çünkü kodunuzf=lambda x,y:42if6==x==y-3else x*y
ETHproductions

3

APL (Dyalog) , 10 bayt

×-12×6 9≡,

Çevrimiçi deneyin!

× ürün (argümanlar)

- eksi

12× on iki kez

6 9≡ (6,9) aynı mı

, bitiştirme (argümanların)


Vay canına sadece bunu gördüm ve J cevabım bununla tamamen aynı: / bir bayt daha uzun hariç
Conor O'Brien

@ ConorO'Brien Mantıklı. J ve taciz APL çoğunlukla eşdeğerdir, J'nin çok karakterli ilkelleri için tasarruf sağlar (ve en üstte kalan son Cap için).
Adám

3

R, 41 Sanırım bayt sayımı bilmiyorum Yeniyim: D

function(a,b){

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

}

Argümanları bu sırayla a ve b olan bir fonksiyon tanımlarım . Eşittir 6, b ise 9, eşittir 42, aksi takdirde, b


Siteye Hoşgeldiniz! :)
DJMcMayhem

Hoşgeldiniz. Yeni satırların ve boşlukların da sayıldığını dikkate alın. Senin durumunda, eğer yeni
hatları

1
Kullanarak iki baytı kesebilirsinizifelse(a==6&b==9,42,a*b)
Masclins

Her şeyi olduğu gibi 33 bayta indirebilirsin function(a,b)`if`(a-6|b-9,a*b,42).
rturnbull

Bu, gereksiz boşlukları çıkardıktan sonra yalnızca 41 bayttır, o zamana kadar 47 bayttır.
Pavel,

3

SPL , 356 bayt

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

Yeni satırlarla ve boşluklarla:

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*


3

Standart ML (MLton) , 22 20 bayt

@Likonik sayesinde 2 bayt kaydedildi!

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

Çevrimiçi deneyin!

SML'nin kastedildiği şey budur, bu yüzden shortC ve Python'u yener.

Eski versiyon çok daha güzel görünüyordu. : P



@Likonik Vay, $bir tanımlayıcı olarak kullanabileceğini hiç bilmiyordum ! |Ve arasındaki boşluğu kaldırırsanız, neden bu derleme yapmaz $?
musicman523

SML , golf oynamak için oldukça kullanışlı olabilecek alfasayısal ve sembolik tanımlayıcıları ayırt eder . |$tek bir sembolik tanımlayıcı olarak ayrıştırılır, böylece her şey bozulur. Yakında SML için bir ipucu sorusu yazmayı ve bu iki tip tanımlayıcı hakkında bir cevap eklemeyi planlıyorum.
Laikoni

2

Pyth, 12 bayt

-*FQ*12q(6 9

Çevrimiçi deneyin

açıklama

 -*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

Akıllıca bir çözüm. 15'te üçlü ifadelerle denedim:AQ?&q6Gq9G42*GH
Tornado547


2

Jöle , 10 bayt

⁼6,9ȧ42ȯ⁸P

İki sayının listesini alan monadik bir bağlantı.

Çevrimiçi deneyin!

Nasıl?

⁼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)

Sadece ?benim de kullandığım gibi kullanabilirdin. ;)
Outgolfer Erik,

Ah çünkü ,hazır bilgi regex modelinin bir parçası olması nedeniyle özel, bu yüzden 6,9tek bir simge olarak ayrıştırılır ve çabukla $birleştirebilir . Buna sebep oldun mu, yoksa sadece dene ve çalıştığını fark ettin mi?
Jonathan Allan,

1
Buna sebep oldum.
Outgolfer Erik,


2

SILOS , 81 67 bayt

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

Çevrimiçi deneyin!

Bir anlamda ekleme, SILOS'ta ilginç bir NAND kapısı olarak işlev görür.

@Leaky Nun sayesinde -14 bayt

Temel olarak, 0 (falsy) olan bir "a" sayısı yaratırız; iff j, 6 ve i = 9 ise, ürünümüze eklemek için onu birer birer çıkarır ve 12 ile çarparız.

Biri çıkardıktan ve çarptıktan sonra "a" 1 ise, no-op olur, ancak a 0 olduğunda, 0/0 sessizce bir hata atarsa ​​(otomatik olarak yakalanan) a 0 olur ve sonra -1 ve 12 ürünümüzden çıkarılıyor.




@LeakyNun ooh, bu zekice.
Rohan Jhunjhunwala

Aslında, 0/0olur 0.
Sızdıran Rahibe,

@ LeakyNun Ben demek istediğim 0 olur ve sonra azalır. Tamir ediyorum.
Rohan Jhunjhunwala


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.