Notcalc (Yanlış cevabı hesapla)


33

Hedef:

İki doğal sayı (0'dan sonsuza kadar tam sayı) verildiğinde, bu sayıların toplamı olmayan, ancak doğal bir sayı olan bir sayı çıkar.

Örnek çözümler (TI-Basic):

  • A+B+1

  • not(A+B)

Geçersiz çözümler:

  • A+B-1(girişler için 0,0, -1doğal olmayan döner )

  • "ABC"( ABCbir sayı değildir)

Notlar:

  • Çıktı her zaman iki doğal sayının toplamı olmalıdır (bu aslında doğal sayıdır)

  • -1, undefined, infinity, NaNVe hata mesajları doğal sayılar değildir. Amaçlarımız 0için doğaldır (tüm matematikçiler aynı fikirde olmasa da).


1
Belki sayıları karakter dizisi olarak alırız ve karakter dizisi olarak çıkardık.
xnor

1
Çıktıda öncü sıfırlar olabilir mi?
Kritixi Lithos,

1
Taşmaların göz önünde bulundurulması gerektiğine inanıyorum, bu nedenle 2 ^ 32 -1 ve 2'nin sonucu negatif olmamalı, değil mi?
adrianmp

1
Sadece küçük bir açıklama çünkü işe yaramaz detaylara dikkat etmeyi seviyorum: 0 doğal bir sayı değil. İlk cümleyi "Verilen iki negatif olmayan tamsayı ..." olarak değiştirirseniz, yorum yapmam için işe yaramaz bir ayrıntı kalmaz. :)
17:17

6
@peech Bu doğru değil. 0, bazı tanımlar altında doğal bir sayı olarak kabul edilir. Bunu göremezsiniz çünkü silinmiştir ancak bu konuda kapsamlı bir konuşma yapılmıştır.
Buğday Sihirbazı

Yanıtlar:


36

RProgN , 4 3 1 Bayt

Geçti 4 hala 4;

E

En basit çözüm, A ve B'nin eşit olup olmadığını karşılaştırır. Doğru, eğer aynıysa RProgN 1 olarak görür, aksi takdirde yanlış aka 0 olur.

Test Kılıfları

0+0 = 1
1+0 = 0
0+1 = 0
1+1 = 1

Çevrimiçi deneyin!


22
Tavşan deliğinden aşağıya çapraz bağlantınla gittim. Ben oranı <s> 4 </s> / 4
Rohan Jhunjhunwala

2
@RohanJhunjhunwala 4'ümü tuttu, içeri giriyorum
Albert Renshaw

4
̶4̶ <- u + 0336 (karakter birleştiren) bunu yapmak için daha iyi bir yol olabilir
Albert Renshaw


3
@AlbertRenshaw eski PPCG-4-a-roo geçti!
Rɪᴋᴇʀ

15

Retina , 3 bayt

 
1

Çevrimiçi deneyin!

(İlk satırda yeni satırdan önce bir boşluk var. Stack Exchange izleyen boşlukları göstermede çok iyi değil.)

Giriş, ondalık boşlukta, boşlukla (örneğin 12 34) ayrılan sayıdır . Bu program sadece boşluğu a olarak değiştirir 1, girdi numaralarının toplamı olmayacak kadar büyük bir sayı oluşturur (her ikisinden de en az 2 hane olmak zorundadır ve iki sayı eklemek, en fazla 1 hane olmayan bir çıktı üretir. daha büyük giriş).


2
0 0ayrıca çalışması gerekir.
Dennis,

1
@Dennis: Bunu merak ediyordum. 010temelde tüm tamsayı ayrıştırıcıları aracılığıyla bir tamsayı olarak kabul edilir. Bazı tamsayı ayrıştırıcıları tarafından geçersiz sekizlik olarak kabul 0 8edilen temelde geçersiz olan potansiyel bir argüman görebiliyorum 018(başkaları tarafından ondalık 18 olduğu düşünülse de). Bu programın girdideki baştaki sıfırlarla başa çıkmakta ve bunları ondalık olarak ele almaktan mutluluk duyduğunu ; ve başkaları için bir sorun görmeden, başka sorular için önde gelen sıfırlar veren programlar yazdım. Konuyla ilgili bir meta gönderi var mı?

2
Veya . 1baştaki sıfırları kendiniz döndürmek istemiyorsanız.
Martin Ender

@MartinEnder> ama doğal bir sayı
wizzwizz4

@ wizzwizz4 Takip etmiyorum.
Martin Ender

15

Python , 13 bayt

[(0,0)].count

Çevrimiçi deneyin! Girişi tuple olarak alır.

İşlev için bir nesne yöntemi kullanmak , a'nın kazan plakasını engeller lambda.

lambda a,b:a-~b   # 15 bytes

Burada, fikri haritalarını çıkarmak (0,0)için 1ve her şey 0. Sadece doğal sayılar arasında 0+0bir toplam verdiğinden 0, her zaman toplamı eşleştirmekten kaçınır.

Biri burada bir Boolean yazdırabilir, gölgeli bulabilirsem, bir bayt olarak kaydedilebilirdi.

(0,0).__ge__

Bu, giriş demetinin en fazla olup olmadığını kontrol eder (0,0); bu sadece için geçerlidir (0,0). Python'da True==1ve False==0. Daha da gölgeli bir şekilde, çıkış koduyla çıktı almak ve bir Python Boolen olarak iki bayt tasarruf edeceğini kabul etmek:

[(0,0)].pop

Dize G / Ç izin verilirse ve baştaki sıfırlar tamamsa, 8 baytlık çözüm vardır.

'1'.join

Bu a1b, her zaman olduğundan daha büyük olan bitiştirir a+b.


1
int.__eq__10 bayt için
Blue

@muddyfish Evet, birisinin de cevabını gördüm, eşitlik kullanmayı düşünmedim. Yine de bir bool döndürür, ki bunun bir sayı çıktısını isteyen bir zorluğa kapıldığını düşünüyorum.
xnor

1
IMO, bir sayı gibi yüzer ve sayı gibi düştüğünde, bunun bir sayı olduğunu varsaymak makul olur.
Hesap MakinesiFeline

13

MATL, vd. 1 bayt

=

İki doğal sayıyı girdi olarak kabul eder ve karşılaştırır. Eşitlerse, çıktı 1ve eşit değillerse çıktıdır 0. Bu @ ATaco'nun çözümü ile aynı yaklaşımdır.


3
=Çözüm ayrıca 1 byte için Jelly çalışır. Önemsiz bir çözüm için ayrı bir cevap oluşturmaya değmeyecek gibi göründüğü için yorumlardan bahsedeceğimi düşündüm.

@ ais523 Bunu içerecek şekilde güncellendi. Teşekkürler.
Suever

2
Ayrıca Yığılmış. Çevrimiçi deneyin!
Conor O'Brien,

APL ve J ekleyebilir misiniz?
Adám

@ Adám Tabii ki bir şey. Bağlayabileceğim bir TIO bağlantın var mı?
Suever

10

Javascript, 10 bayt

x=>y=>!x+y

Bunun gibi currying sözdizimini kullanarak 2 sayı alır:

(x=>y=>!x+y)(0)(0) // 1

4
Siteye Hoşgeldiniz! :)
DJMcMayhem

Teşekkürler =) Bir süredir zorlukları okudum, sadece başlamak için iyi bir yer bulmaya çalışıyorum.
Malivil

9

Vim, 3 bayt / tuş vuruşlarını

<C-a>gJ

Çevrimiçi deneyin!

Bunun <C-a>aslında bayt'ı temsil eden ctrl-a olduğuna dikkat edin 0x01.

Vim'in (bir programlama dili bile olmayan) golf dilleriyle rekabet edebildiğini seviyorum. :) Giriş bu biçimde gelir:

a
b

Bu sadece ilk sayıyı bir artırır (Bu <C-a>kısımdır) ve sonra iki sayının dizgi gösterimlerini birleştirir. Söyleyebileceğim kadarıyla, bu asla toplamla sonuçlanmamalı.


9

Beyin Flak , 8 bayt

({}{}())

Çevrimiçi deneyin!

Bu şimdiye kadar yazdığım en okunaklı beyin lafı cevabı. :)

Açıklama:

(      )    # Push the sum of all the following:
 {}         #   The first input
   {}       #   The second input
     ()     #   and one

Alternatif çözümler (ayrıca 8 bayt):

({}[]{})    # Sum + 1
([]{}{})    # Sum + 2

Sadece pozitif sayılarla çalışan bir sürü başka çözüm var:

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

7

Jöle , 2 byte

+‘

+, İki girişi birbirine ekler ve 'yanıtı birer birer artırır

Çevrimiçi deneyin!


Bu cevap beni jöle yapar.
MD XF

Bahse girerim: P
Christopher

Teknik olarak bu değildir (a+b)+1, ancak a+(b+1)iki atomlu-atom zinciri nedeniyle fGolarak kabul edilir f(a, G(b)). Bu durumda aynı şey ancak teknik olarak nasıl çalıştığı farklı: P
HyperNeutrino

6

TI-Basic, 3 bayt

not(max(Ans

Alternatif çözümler:

10^(sum(Ans         3 bytes @DestructibleWatermelon
not(sum(Ans         3 bytes
1+sum(Ans           4 bytes
Input :X=Y          5 bytes @ATaco
Input :X+not(Y      6 bytes
Input :not(X+Y      6 bytes
Input :10^(X+Y      6 bytes
Input :X+Y+1        7 bytes
Input :not(max(X,Y  7 bytes
Ans(1)=Ans(2        8 bytes
Ans(1)+not(Ans(2    9 bytes
not(Ans(1)+Ans(2    9 bytes

Sorunun örneklerini TI-Basic'te yapmış olmanız ilginçtir, ancak daha kısa olanı unuttunuz A=B(ya da belki öğrenmek bize kalmıştı?)


1
OP, soruya süper kısa bir çözüm gönderdiğinde hiç kimseden hoşlanmıyor, bu da yenmeyi zorlaştırıyor.
mbomb007

@ mbomb007 Sanırım, ama bunlar sadece parçacıklardı ve tam programlar değildi. Prompt A,B:Onlara ekleme , bayt sayısını her biri sekiz bayta getirir.
Timtech

1
@Timtech Tam olarak. Örnek olarak iyi cevaplar vermek istemedim, sadece örnekler istedim.
Julian Lachniet

@JulianLachniet Bunu anlıyorum ve takdir ediyorum :)
Timtech

6

Brachylog , 2 bayt

+<

Çevrimiçi deneyin!

açıklama

+     The sum of the elements in the Input...
 <    ...is strictly less than the Output
      (implicitely label the output with an integer respecting this constraint)

Bu her zaman sonuçlanır A+B+1, eğerInput = [A, B] .


5

Mathematica, 5 bayt

1+##&

İki argüman artı 1'in toplamını 1+##&[2,5]verir 8. Örneğin, verim .

(Yan not: Binomialher ne kadar neredeyse eser Binomial[1,0]=1ve Binomial[4,2]=6karşı örnekleridir; Gerçi onlar sadece counterexamples olduğunu düşünüyorum.)


Pochhammerdaha iyi biri gibi görünüyor Binomial. Söyleyebileceğim kadarıyla sadece 1,0başarısız olur.
Martin Ender

Ah, ve KroneckerDeltabütün girdiler için çalışıyor (bazı esolanglarda eşitlik kontrolünün eşdeğeri). Aslında yeniden biçimlendirmek aslında daha kısa Boole[#==#2]&, ama sanki eskisi gibi çalışan bir yerleşik aradığınızı varsayıyorum.
Martin Ender

5

PHP, 17 bayt

<?=1-join($argv);

Bu şekilde koş:

echo '<?=1-join($argv);' | php -- 0 0
> 1

açıklama

Bu sadece argümanları birleştirir. İlk argüman (script ismi) içerir -. Bu eksi işareti ile olumsuz bir olumsuz sayı ile sonuçlanır. Sonra ilk giriş numarasının bir 0(0123 = 123) olması durumunda 1 eklerim .



4

Turtlèd , 12 bayt

çok büyük sayılar yapar

'1?:?:[1'0l]

Çevrimiçi deneyin!

Açıklama:

'1                write one on the starting grid square
  ?:?:            take a number, move right that many (repeat)
      [1   ]      while not on a grid square with a one on it
        '0l       put a zero on that square, move left
[implicit output of grid]

Böylece 10 ** (x + y) çıkışı verir.



4

Java (OpenJDK 9) , 10 bayt

a->b->a-~b

Çevrimiçi deneyin!


1
-İşlemden ile, bir bayt ayırabilirim: a->b->a-~b. Ayrıca Java 8, herhangi bir sürümle de çalışır (bu yüzden OpenJDK 9'u belirtmenize gerek yoktur)
Olivier Grégoire

@ OlivierGrégoire Java şimdi JS gibi görünmeye başladı> _>
Kritixi Lithos

@KritixiLithos Pekala ... Bunun yıllar boyunca gerçekleşeceğine dair bir ipucumuz vardı: Java Script ;-)
Olivier Grégoire

@KritixiLithos Java 9 için verilen spesifikasyonda 'ECMAScript 6 Compliance' ile ilgili bir bölüm bulunmaktadır.
Pavel

@ OlivierGrégoire Evet, ancak bu başvuru otomatik olarak gerçekleşti, bu yüzden 9 eklendi.
Pavel

4

HODOR , 40 bayt ( yarışmaz )

Bu muhtemelen Hodor'un şimdiye kadar yazdığı en kısa program!

2 haftalık bir okul tatili için yapacak bir şeyiniz olmadığında olan şey budur: kesinlikle hiçbir şey yapmayan bir sürü gerçekten kolay kodlanmış şaka dili oluşturun. Okul tatilleri için Yay !!!

Walder
Hodor?!
Hodor?!
Hodor HODOR!
HODOR!!!

Walder Hodor'un asıl adıydı ve programa başlamak için de gerekiyor.

Hodor?! STDIN'den bir sayı veya tek bir karakter alır ve akümülatörü girişe ayarlar.

Hodor aküye 1 ekleyin

HODOR! akümülatörü sayı olarak verir

HODOR!!!Hodor'u öldürdü! Noooooo!

Bu sahte kod:

Take input
Take input
Add 1 to sum(inputs)
Output value

1
Bence bu, 2015'te yaratılan önceden mevcut Hodor dilinin bir tercümanı olmadığı sürece, diliniz için farklı bir isim bulmanız gerektiğini düşünüyorum .
mbomb007

@ mbomb007 Hayır, bu benim değil ama yinelenen isimleri olan diller var. Bu sitede 7 adlı iki
kişiden tanıyorum (

1
Ben çok emin orada 7 denilen biri yalnızca, ve bu kadar değilim bu bir . HODOR gibi kolay bir düzeltme için başlığın büyük harflerini değiştirebilirsiniz.
mbomb007

@ mbomb007 mine H kokusu ve onların h kokusu bu yüzden yeterli olabilir?
caird coinheringaahing

Hayır, onların web sitesinde dil adını her kullanışından görebileceğiniz gibi, büyük bir H harfine sahiptir.
mbomb007

3

SmileBASIC, 4 bayt

!A+B

olup, (A) + B
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2


Meraktan, bu nasıl destekliyor 2+1?
ATaco

2
2+1=3 -> !2+1 -> 0+1=1
12Me21

3

R, 13 bayt

sum(scan()+1)

Girişlerinden dolayı Jonathan Allan'a teşekkürler!


@ JonathanAllan: Haklısın, cevabımı değiştirdim. Teşekkürler !
Frederic

Tamam, belki de 00aynı olduğuna eminim ? 0sep="1"
Jonathan Allan,

@JonathanAllan: kahretsin! Tekrar teşekkürler !
Frédéric

Baktığımızda Golf In R için ipuçları görünüyor scan(), bir vektör girişi kabul ederek iyi olmalı böyle . Ama bir bayt ile daha iyisini yapabiliriz cat(sum(scan()+1)). Belki daha kısa var?
Jonathan Allan,

1
Bu, cattam bir program olduğu için, alternatif aynı byte maliyeti için adlandırılmamış bir fonksiyon olacaktırfunction(a,b)a+b+1
Jonathan Allan

3

05AB1E , 1 bayt

Q

Cevapla aynı şekilde çalışır RProgN.

Çekler eğer ave baynıdır. Eğer öyleyse, yazdırın 1. Aksi takdirde, yazdır0

Çevrimiçi deneyin!


3
¢(a.count (b)) 1 bayt için de çalışmalıdır.
Riley,

@Riley bunu kendi cevabınız olarak gönderebilirsiniz.
Okx

2
Kendi cevabına ihtiyacı olacak kadar farklı değil. İki baytlık çözümleri de tek bir cevapta birleştirebileceğimizi düşündüm.
Riley,

3

C 26 24 19 bayt

f(c,d){return!c+d;}

Ungolfed versiyonu:

int f(int c,int d)
{
   return !c+d; 
}

Umarım şartnameyi doğru anlamışımdır. Kesinlikle kısaltılabilir!

@Pavel 2 bayt kaydettiğiniz için teşekkür ederiz

@Neil Girişiniz için teşekkürler.


1
()Etrafa ihtiyacın var !c+dmı?
Pavel

@Pavel Haklısın, parantez işe yaramaz, güncellendi!
Abel Tom,

2
Değil% 100 emin ama bence aşağıdaki konularda boşluğu kaldırabilirsiniz returngibireturn!c+d;
Metoniem

1
Geri dönüşünü kaybet ve yerine c + =! D
Ahemone

1
@AlbertRenshaw Taşınabilirlik için güveneceğim bir şey değil, işte birkaç örnek. Çevrimdışı çalışmasını sağlayamıyorum ve görünüşe göre TIO'da
Ahemone

3

MATLAB / Octave, 3 bayt

@eq

İki girdiyi kabul eder ve eşitliği kontrol eder ve 1eşit olup olmadıklarını verir 0.

Çevrimiçi Demo


4
Bu olmamalı @eqmı? Bu, sadece eqanlamsız olsa da, istenen işlevin değerlendirilmesinde kullanılabilecek bir işlev tanıtıcısı döndürür .
Sanchises

@Sanchises Çok fazla cevabı iki tarafa da gördüm: codegolf.stackexchange.com/questions/106149/compute-the-median/… . Hangisinin tercih edildiğinden emin değilim.
00'de Suever

Hmmm. Bunun daha çok bir snippet gibi olduğunu düşünürken, @geçerli bir dil yapısına dönüşür. Ama belki de sadece bilgiçlik yapıyorum.
Sanchises

3

brainfuck, 12 bayt

Çıktıları basit bir çözüm A+B+1.

,>,[-<+>]<+.

Çevrimiçi deneyin


Alternatif cevap (12 bayt):,>,[-<++>]<.
Julian Lachniet

@JulianLachniet bu A + 2B çıkışını verecek mi?
george

A + 2B, B = 0
l4m2

@ mbomb007 ,>,[-<++>]<.Çözüm diyorum
l4m2

@JulianLachniet Evet, bu geçerli bir cevap değil çünkü B = 0 girişi için A + 2B A veriyor.
mbomb007

3

dc , 5 bayt

?1n+n

Çevrimiçi deneyin!

Giriş: stdin'deki boşlukla ayrılmış iki doğal sayı.

Çıktı: Hemen 1 rakamı ve ardından iki sayının toplamından sonra iki rakamın toplamından sonra gelen rakam.

Örnek:

Giriş: 222 333

Çıktı: 1555


3

PHP, 13 bayt; (17 REPL-az)

!max($argv)+0

Örnekler

[0,0] -> 1
[0,1] -> 0
[1,0] -> 0

REPL kullanımı olmayanlar için

<?=!max($argv)+0;

ve kullanarak koş

echo '<?=!max($argv)+0;' | php -- 0 0

Öyle değil çıkış şey yapmıyor, çünkü bu cevap geçerli değil
aross

@aross Boolean oyuncuları sorun çıkarsa cevabımı güncelledim
mleko

Evet, her iki soruna da değindiniz. Çıktı 1/0 değil doğru / yanlış olur. Ayrıca, REPL :)
17:17

3

Cubix, 9 8 bayt

u-~OII/@

açıklama

Genişletilmiş, bu cevap şöyle görünür:

    u -
    ~ O
I I / @ . . . .
. . . . . . . .
    . .
    . .

Yürütülen talimatların sırası II~-O@

II~-O@
I      # First input
   -   # Minus
 I~    # NOT(second input)
    O  # Output as integer
     @ # End program

Her ikisinin de aralığında bulunan tüm giriş kombinasyonları için test edilmiştir 0-100.

Burada dene .


3

APL - 4 Bayt

1++/

Dizi alır, elemanlarını toplar ve bir tane ekler. Ölçek:

 1++/1 2  
4
 1++/1 0
2


3

Altıgen , 7 bayt

?<.!?)@

Çevrimiçi deneyin!

Veya daha okunabilir biçimde,

 ? <
. ! ?
 ) @

Bu, 11 baytın mevcut Hexagony çözümünü yener.

Açıklama:

İlk sayı 0 değilse, program aşağıdaki yolu izler:

0 değil

Bu ilk sayıyı okur ve dallar doğru. Sonra ikinci sayıyı okur, ardından üçte birini okumaya ve okumaya çalışır, ancak bu 0 olur. Öyle olmaz. Bu yazdırılır ve program sonlandırılır (a> 0 ise b negatif olmadığından + b> 0).

İlk sayı 0 ise, program başlamak için aşağıdaki yolu izler:

0

Bu, ilk sayıyı ve kalan dalları okur. Köşeye çarpar, rotayı kuzey-batı kenarı boyunca çeker, çünkü sayı 0'dır ve ikinci sayıyı okur. Kaydırır, sonra ikinci sayıyı artırır ve yazdırır.

Hala 0

Bu karşı sıçrar <tekrar artırılır ikinci girdi yazdırma. Değeri arttırır ve kuzey-doğu kenarını tekrar alır, ancak bu kez mevcut kenar kesinlikle pozitif olan iki kat arttırılmış negatif olmayan bir değerdir. Daha sonra üçüncü bir girdi elde etmeye çalışır, ancak bunun yerine 0 alır.

Hala 0 tane daha var

Sonunda okla sarılır ve yönlendirilir, sonra dördüncü bir girişi okumaya çalışır ve tekrar 0 alır. Beşinci bir girişi sarar ve okur ve son kez 0 alır. Bu yazdırır ve sarar @ve çıkar.

B * (10 ^ k + 1) * 10> 0 + b = b burada k rakamının b uzunluğu kadardır, bu nedenle işe yarar.


2

Bilardo , 11 karakter = 17 bayt

⇲
⇲
+
1
+
↥

Uygular x + y + 1. Oldukça basit. Girişleri iki ayrı satırda alır. (Bu arada, dil zorlu görevden biraz sonra değiştirildi, ancak sadece istemin girilmesini engellemek için bu cevabın hala geçerli olup olmadığından emin değilsin).

7 karakter = 11 bayt, rakipsiz

Bu daha kısadır, ancak yeni bir dil güncellemesinden sonra mümkündür:

⇲
⇲
=
$

x == y@ ATaco'nun RProgN çözümünden utanmadan çalınan bu kullanımlar [umursamıyorum (:]. $Çıkışta, kaç tane top üzerinden geçtiğini gösterir.


slightly after the languageyazım hatası, ayrıca dilin giriş istemi olduğunda, bunun hala geçerli olacağını düşünüyorum. Çıktı standartlarının o kadar katı ve baskılanamayan çıktılara izin verildiğini sanmıyorum bence
Yıkılabilir Limon

@ Yıkılabilir Karpuz Ah, garip bir yazım hatası oldu. Açıklama için teşekkürler. Aslında dili değiştirdim, sonra geldim ve meydan okumayı gördüm, bu nedenle, GitHub'a itme işleminin ne zaman yapıldığını kontrol etmeye karar veren biri olması durumunda, o notu eklemeye karar verdim, ancak bunu açıkladığınız için teşekkür ederim.
HyperNeutrino,
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.