Wyzwanie
Podając poprawną sumę arytmetyczną z pewnymi brakującymi liczbami, wypisz pełne wyrażenie.
Przykład:
1#3 123
+ 45# => + 456
-------- --------
579 579
Wejście
- Format wyrażenia może być tablicą
["1#3", "45#", "579"]
, łańcuchem"1#3+45#=579"
lub 3 wejściamif("1#3","45#","579")
Wynik
- Taki sam jak dane wejściowe
- Nie musisz generować wyniku
Notatki
- Brakujące liczby zostaną przedstawione za pomocą
#
dowolnego innego stałego znaku nienumerycznego - Załóżmy, że wynik nie będzie miał brakującej liczby
- Załóżmy, że dane wejściowe / wyjściowe składają się z 2 składników i wyniku końcowego
- Załóżmy, że zarówno> 0, jak i wynik> = 2
- Może istnieć wiele rozwiązań. Możesz wyprowadzać dowolne, o ile wynik sumy jest zgodny
Przypadki testowe z możliwymi wyjściami (ładny format)
#79 879
+ 44# => + 444
-------- --------
1323 1323
5#5 555
+ 3#3 => + 343
-------- --------
898 898
# 1
+ # => + 1
-------- --------
2 2
### 998
+ ### => + 1 PD: there are a lot of possible outputs for this one
-------- --------
999 999
123 123
+ # => + 1
-------- --------
124 124
9 9
+ #6 => + 46
-------- --------
55 55
#123651 1123651
+ #98# => + 7981
------------ -----------
1131632 1131632
Obowiązują standardowe zasady gry w golfa
code-golf
arithmetic
integer
Luis Felipe De Jesus Munoz
źródło
źródło
=
zamienionymi bokami ? np.579=1#3+45#
Odpowiedzi:
Brachylog ,
2216 bajtówWypróbuj online!
-6 bajtów dzięki @Fatelize
Wyjaśnienie
źródło
{"#"∧Ị∋|}ᵐ²ịᵐ.k+~t
jest o 4 bajty krótszy. Nie jestem pewien, dlaczego zrobiłeś coś tak skomplikowanego na swojej mapie.Ṣ
zamiast"#"
której zaoszczędzisz jeszcze dwa bajty.JavaScript (ES6),
7457 bajtówZajmuje wejście jak
(a)(b)(result)
, gdzie i b są ciągi z nieznanych cyfr i wynik jest liczbą całkowitą. Zwraca tablicę 2 liczb całkowitych..
Wypróbuj online!
Skomentował
źródło
-~n
nie może być sprawiedliwyn+1
i jakF=(c,n)=>
został użyty. Teraz, gdy dodałeś wyjaśnienie, wszystko ma sens.c
jest trzecim wejściem,n
jest niezdefiniowany (i~undefined
staje się-1
niepodobnyundefined+1
). Wszystko jasne teraz (i nie jest to coś, co niestety mogę przenieść na Javę, dlatego głównie starałem się to zrozumieć xD). PS: Już głosowałem wczoraj, więc właśnie głosowałem jedną z twoich innych odpowiedzi (których jeszcze nie głosowałem, niewiele dostępnych ..); pnull
, ręcznie przekonwertując ją na-1
. Jednak Java ma (bardzo) ograniczony rekursywny limit StackOverflow, więc użycie metody rekurencyjnej z przypadkowością, mając nadzieję, że skończy się poprawnie w ciągu około 1024 rekurencyjnych wywołań, i tak nie zadziała. Ach tak. Głosowałem za twoim napiwkiem. Miłego weekendu! :)###+###=999
Twoje szanse wynoszą 1 na 1000. Więc przy 1024 iteracjach powinieneś odnieść sukces nieco częściej niż nie. :)Matlab,
143134132119 119115 bajtów-4 bajty dzięki @Luismendo
Wypróbuj online
Dość duży i głupi. Po prostu zastępuje wszystkie
#
losowymi cyframi, dopóki nie znajdzie poprawnych cyfr.źródło
R ,
6751 bajtówRock prosty i skalujący się okropnie, po prostu grepuj wszystkie kombinacje sum. Posługiwać się "." dla nieznanych cyfr. Nie znajdzie taką samą odpowiedź jak przypadek testowy numer 4, ale da się możliwą odpowiedź, która następuje po literze zasad jak podano.
-16 bajtów przez grepping po utworzeniu wyjścia i zastąpieniu
paste
go?
operatorem.Wypróbuj online!
źródło
?
wymyślisz ... Myślę, że to pierwszy. tak przy okazji, zapomniałem, czy już ci powiedziałem, ale staramy się uzyskać nominację R na język miesiąca we wrześniu - możesz głosować, jeśli jeszcze tego nie zrobiłeś.Węgiel drzewny , 32 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wciśnij dwa ciągi
0
do wstępnie zdefiniowanej pustej listy,u
aby uruchomić pętlę while.Powtarzaj, gdy suma rzutowania wartości
u
na liczbę całkowitą nie jest równa pożądanemu wynikowi.Utwórz tablicę dwóch wejść i odwzoruj na niej.
Zastąp każdą
#
cyfrą losową i przypisz wynik z powrotem dou
.Wydrukuj wynik wyrównany do prawej. (Wyrównanie do lewej byłoby tylko
υ
dla oszczędności 4-bajtowej).źródło
Galaretka , 20 bajtów
Wypróbuj online!
źródło
05AB1E ( starsza wersja ),
2320 bajtów-3 bajty dzięki @Emigna .
Nieznane cyfry to spacje (
). Kolejność wprowadzania powinna być: oczekiwany wynik; najdłuższy ciąg; najkrótszy ciąg.
Wypróbuj online .
Wyjaśnienie:
źródło
Perl 6 ,
8174 bajtów-7 bajtów dzięki nwellnhof!
Wypróbuj online!
Anonimowy blok kodu, który pobiera dane wejściowe jako ciąg zawierający wyrażenie arytmetyczne, np. „12 # + 45 # = 579”. Zastępuje każdą
#
możliwą kombinacją cyfr, zastępuje=
ją==
i znajduje pierwszy poprawny wynik.Wyjaśnienie:
źródło
S:g[\#]=$a[$++]
zamiasttrans
do 74 bajtów .S///
takiej składni! Dzięki!APL (Dyalog Unicode) , 22 bajty
Wypróbuj online!
źródło
Java 10,
203198193 bajtówWypróbuj online.
Wyjaśnienie:
źródło
C (gcc) ,
228213203172170 bajtów-15 bajtów dzięki @ceilingcat . Nigdy wcześniej nie korzystałem
index
.-10 Bajtów dzięki @Logem . Magia preprocesora
refaktoryzowane wywołanie
exit(0)
z parametrami put jako parametr.Wypróbuj online!
źródło
-DX=c=index(v
, z-DX=(c=index(v
linkiem TIO w moim ostatnim komentarzu.C # .NET,
225220196 bajtówPort mojej odpowiedzi Java 10 .
(Jestem bardzo zardzewiały w golfie w C # .NET, więc z pewnością można grać w golfa ..)
-3 bajty domyślnie dzięki @ user82593 i tej nowej końcówce C #, którą dodał .
-29 bajtów dzięki @hvd .
Wypróbuj online.
Wyjaśnienie:
źródło
using System;
, jest on krótszy niżnamespace System{}
.using System.*;
podobnie jak import w Javie, ale to nie działało. Zapomniałem, że musiałem usunąć.*
część. Dzięki za -5 bajtów.int.Parse
(-4), używaćnew System.Random()
(+7) i upuszczaćusing System;
(-13), aby zapisać kolejne 10 bajtów. :) Poza tym nie potrzebujesz.ToCharArray()
, bo startuje jeszcze 14 bajtów.int.Parse
vsSystem.Int32.Parse
... To w zasadzie to samo, coSystem.String
istring
.. I nie wiedziałem, że można było zapętlić postacie bez.ToCharArray()
. Dzięki za kolejne -24 bajty. : DPython 3 ,
121155152149 bajtówWypróbuj online!
+34 Nowe rozwiązanie z wyrażeniem regularnym w celu obejścia faktu, że python nie obsługuje liczb z zerami wiodącymi.
-3 dzięki @Jonathan Frech
Stare rozwiązanie nie działa, jeśli # jest pierwszym znakiem w dowolnej liczbie (ponieważ eval nie przyjmuje wiodących zer) i dlatego jest nieprawidłowy :(
Wypróbuj online!
źródło
PHP, 112 bajtów
kiepskie rozwiązanie brutalnej siły
przyjmuje ciąg znaków jako wejście, zatrzymuje się przy pierwszym rozwiązaniu. Uruchom jako potok z
-nR
lub spróbuj online .źródło
PowerShell, 91 bajtów
Skrypt znajduje wszystkie rozwiązania. Całkowita liczba iteracji wynosi 10 potęgi liczby znaków
#
. Głębokość rekurencji jest równa liczbie znaków#
.Skrypt testowy:
PowerShell: „Załóż, że oba terminy> 0” jest obowiązkowe, 110 bajtów
źródło