Wejście
Otrzymasz mapę 2D z kulkami i podłożem. To wygląda tak:
1 5 2
3
4
__________________________
Każda liczba jest piłką, a _
poziom gruntu. Znak podkreślenia _
nie jest dozwolony w żadnej innej linii niż linia na poziomie gruntu. Nad 0-9
poziomem gruntu dozwolone są tylko spacje, znaki nowej linii i cyfry . Nie można zakładać, że ostatnia linia to poziom gruntu - dozwolone są puste linie poniżej poziomu gruntu. Możesz także dodać spacje, aby wypełnić puste linie, jeśli to ci pomoże.
Piłki mogą mieć numery od 0
do 9
, mogą być umieszczone nad sobą, ale nie pod ziemią. Numery piłki będą niepowtarzalne.
Załóż, że każda postać ma metr .
Pobierz mapę z pastebin!
Przypadek testowy 1 - wyjście powinno coś jak ten
przypadek testowy 2 - powinny produkować takie same wyniki jak pierwszy mapie
Wyzwanie
Twoim zadaniem jest odczytanie takiej mapy z pliku lub z stdin
- możesz użyć cat balls.txt | ./yourexecutable
- i prędkości wyjściowej każdej kuli, gdy uderzy ona o ziemię.
Załóżmy, że h
jest to różnica numeru linii między numerem linii ziemi a numerem linii piłki i g
jest równa 10m/s^2
.
Wynik
Należy podać liczbę i prędkość każdej kulki m/s
na poziomie gruntu. Na przykład N - Vm/s
, gdzie N
jest liczba kuli i V
jej prędkość. Możesz również wypisać tablicę, jeśli chcesz.
Miłego kodowania! :)
Odpowiedzi:
MATL ,
31302725 bajtówDane wejściowe to tablica
;
znaków 2D z separatorem wierszy:Wypróbuj online! Lub dołącz inicjał
t
do kodu, aby wyświetlić mapę dla większej przejrzystości.Oto inne przypadki testowe: pierwszy , drugi .
Wyjaśnienie
źródło
C,
125122121 bajtówKompiluj i uruchamiaj z
gcc -w golf.c -lm && cat balls.txt | ./a.out
.źródło
0 ... 9
występuje w pliku tekstowym. W każdym razie +1, ponieważ nie wskazanie tego jest moją winą_
. Można to jednak naprawić za pomocą jednego dodatkowego bajtu (!=
zamiast<
).C -
194 (-5)150137 bajtówMając trochę więcej czasu i myślenia, grałem w golfa 44 bajki.
Dziękujemy orlp za pomoc w oszczędzeniu 13 bajtów.
Zacznę od mojego kodu C:
I wersja czytelna dla człowieka:
Skompiluj i uruchom w ten sposób:
gcc -o balls ballsgolf.c -lm && cat 1.txt | ./balls
Wynik
źródło
~(c=getchar())
zamiast(c=getchar())!=EOF
.if (x != -1)
jest taki sam jakif (~x)
(na dwóch maszynach dopełniających), ponieważ~-1
jest (wyjątkowo)0
. W C golf nigdy nie używajwhile(cond)
, ponieważfor(;cond;)
jest tak samo długi i zapewnia więcej możliwości gry w golfa. W twoim przykładzie może to byćfor(;~(c=getchar());n=c==95?l:n)b[c]=(l+=c==10);
.l=1
można obejść, wprowadzającl
pierwszy argument dlamain
, ponieważ środowisko wykonawcze C przekazuje liczbę argumentów do main jako pierwszy argument (argc
), a gdy wywołujesz program bez żadnych argumentów wiersza poleceń (./a.out
), toargc = l = 1
.n=0;
jest niepotrzebne, ponieważ globalne liczby całkowite są automatycznie inicjowane na 0. Wystarczy więcn;
.Pyth,
27262524 bajtówWypróbuj online!
źródło
Matlab,
100968990 bajtówWiele bajtów zaoszczędzonych dzięki Luisowi Mendo
Format wejściowy:
Wyjaśnienie:
źródło
Python 3, 84 bajtów
Wersja 6, 84 bajtów: (Dzięki Leaky Nun!)
Wersja 5, 91 bajtów:
Wersja 4, 92 bajty:
Wersja 3, 99 bajtów:
Wersja 2, 102 bajty:
Powyższe wersje pobierają tablicę ciągów jako dane wejściowe.
Wersja 1, 140 bajtów:
To pobiera katalog pliku jako dane wejściowe od użytkownika.
źródło
1 for l in i
->1for l in i
(n-1)*20
->~-n*20
print
wywołaniem?e
, ponieważ wtedy tokenizer Pythona spróbuje go przeanalizować jako notację zmiennoprzecinkową (np1e5
.). Przykładem, który nie:f = lambda n:-1if n<0else 1
. Przykładem, który zawodzi w obu wersjach Pythona, jest to0or 1
, że tokenizer myśli, że0o
rozpoczyna liczbę ósemkową.Python 3, 84 bajtów
Anonimowa funkcja, która akceptuje wprowadzanie argumentem jako ciąg wieloliniowy ze wszystkimi pustymi liniami wypełnionymi spacjami i zwraca tablicę, w której każdy element ma postać [liczba kulek, prędkość].
Jak to działa
Wypróbuj na Ideone
źródło
f = MyAnswer
, a następnie zadzwonić za pomocąf(x)
. Panuje zgoda, że nie ma potrzeby nazywać lambdas . Nawiasem mówiąc, niezłe wyzwanie!JavaScript (ES6) 93
Edytuj 2 bajty zapisane przez @Jajajack
Funkcja z ciągiem wielowierszowym jako parametrem wejściowym. Dane wyjściowe nie są sortowane (ponieważ nie są wymagane)
Test
źródło
sqrt(x)
byłby krótszy niżpow(x,.5)
?