Sejsmometry USGS właśnie wykryły poważne trzęsienie ziemi! Zespoły reagowania kryzysowego potrzebują szybkiego oszacowania liczby dotkniętych osób. Napisz program do obliczenia tego oszacowania.
Twój program otrzymuje 2 wejścia. Pierwszy to szczegóły samego trzęsienia ziemi. Trzęsienie ziemi zamodelowane jako odcinek linii, wzdłuż którego pękła ziemia, wraz z krytyczną odległością od uskoku, w obrębie której można oczekiwać uszkodzeń. Drugim wejściem jest lista lokalizacji i liczby ludności miast w okolicy. Twój program powinien obliczyć liczbę osób mieszkających w dotkniętym obszarze, czyli sumę populacji wszystkich miast w odległości krytycznej odcinka uszkodzenia.
Wejście
Najpierw linia opisująca trzęsienie ziemi, zawierająca współrzędne x, y punktu początkowego i końcowego uszkodzenia oraz odległość krytyczną. Format to A_x A_y B_x B_y D
. Na przykład:
3.0 3.0 7.0 4.0 2.5
koduje błąd rozciągający się od (3.0.3.0) do (7.0.4.0) i odległość krytyczną 2,5.
Po drugie, jedna linia na miasto w obszarze, zawierająca współrzędne x, y miasta i jego ludności. Na przykład:
1.0 1.0 2500
5.0 7.0 8000
3.0 4.0 7500
9.0 6.0 3000
4.0 2.0 1000
Wynik
Liczba osób mieszkających w dotkniętym obszarze. W powyższym przykładzie tylko trzecie i piąte miasto znajduje się w strefie niebezpiecznej, więc wynik byłby
8500
Najkrótszy kod wygrywa.
Przykład 2
0.0 0.0 10.0 0.0 5.0
5.0 4.0 10000
5.0 -4.0 1000
5.0 6.0 100
11.0 2.0 10
-4.0 4.0 1
generuje
11010
8500.0
być w porządku na przykład? A może moglibyśmy dostać więcej testów?Odpowiedzi:
Rubin,
171152155153To jest moje pierwsze przesłanie ruby i mój pierwszy kod-golf. Prosta realizacja zadania. Proszę dać mi kilka wskazówek, jak poprawić (musi istnieć krótszy sposób na odczyt pływaków ...).
źródło
map
ieval
, i inlinet
. A ponieważ już ewaluujesz, możesz zamiast tego użyć ciągów formatujących.to_f
, więc ostatni blok można skrócić dop eval$<.map{|l|"(x=%f-u;t=(x*a+b*y=%f-v)/(a**2+b**2);d*d<(x-t=t<0?0:t>1?1:t)**2+(y-t*b)**2?0:%d)"%l.split}*'+'
t
ponownie ratuje kolejne dwa.undefined method > for nil:NilClass (NoMethodError)
JavaScript (437)
Prawdopodobnie można to znacznie zagrać w golfa, ale nie wystarczy, aby pokonać rozwiązanie Ruby.
Możesz to zobaczyć tutaj w akcji .
źródło
b-0
zamiast(b*1)
1 znaku, usuwając końcowy średnik. Na koniec zacznij odM=Math
i zamień wszystkieMath
s naM
, oszczędzając 6 znaków. Użycie Prototypu i.value
zapisanie 2 znaków (#
i jednego nawiasu).C # -
743715Nie gra w golfa:
źródło
quake.cs(1,254): error CS1525: Unexpected symbol ',', expecting 'from', 'group', 'join', 'let', 'orderby', 'select', or 'where'
). Wersja bez golfa działa dobrze.c - 471 znaków
Zakłada, że twoja standardowa biblioteka ma
getline
.Metoda została nieco wyjaśniona w komentarzu do wersji bez golfa:
źródło
scala: 660 znaków:
bez golfa:
źródło