Ustawa o równoważeniu
Przegląd
Biorąc pod uwagę 3 jednocyfrowe dodatnie liczby całkowite reprezentujące zestaw wag, wyprowadza reprezentację ASCII huśtawki z umieszczonymi na niej ciężarkami, tak aby znajdowała się ona w równowadze wokół centralnej osi obrotu, biorąc pod uwagę efekty dźwigni.
Każda liczba ma wagę równą jej wartości. Moment obrotowy każdej liczby jest masą pomnożoną przez jej odległość od środka w znakach. Aby huśtawka była w równowadze, sumaryczny moment obrotowy ciężarków po lewej stronie huśtawki musi być równy momentowi obrotowemu sił po prawej stronie, tak jak to .
Wkład
3 liczby całkowite z zakresu 1-9. Możesz wprowadzić liczby całkowite, ale jest to wygodne, np. Krotka, 3 wartości oddzielone przecinkami itp. Jednak twój program musi być w stanie obsłużyć wprowadzane liczby w dowolnej kolejności (tzn. Nie zakładając, że wartości zostaną posortowane). Można wprowadzić duplikaty liczb (np. 2,3,2).
Dane wejściowe zawsze będą matematycznie dopuszczać prawidłowe dane wyjściowe, w przeciwnym razie dane wejściowe nie będą prawidłowe.
Wydajność
Wyjście powinno być 2-liniową reprezentacją huśtawki ASCII z umieszczonymi na niej ciężarkami. W pierwszym wierszu znajdują się cyfry rozmieszczone w celu zrównoważenia ich na huśtawce.
Liczb nie można umieszczać w samym środku skali, gdzie odległość, a zatem moment obrotowy, wynosiłby zero. Prawidłowe odległości od centrum mieszczą się w przedziale od 1 do 10 znaków łącznie z lewą lub prawą osią obrotu.
W obszarach niezajętych numerami znajduje się 18 znaków podkreślenia (środkowy znak podkreślenia i 10 po każdej stronie, minus 3 pozycje zajmowane przez liczby). W ostatnim wierszu znajduje się pojedynczy znak karetki wyrównany do środka skali, reprezentujący oś obrotu.
Przykłady
Wkład:
4,7,2
Wydajność:
________7___42_______
^
7 * 2 = 4 * 2 + 2 * 3
Liczby mogą być wyprowadzane po obu stronach, na przykład byłoby to również prawidłowe:
_______24___7________
^
2 * 3 + 4 * 2 = 7 * 2
Liczby można umieszczać w dowolnym miejscu skali, pod warunkiem że się równoważą, np .:
Wkład:
3,1,5
Wydajność:
_____5________1__3___
^
5 * 5 = 1 * 4 + 3 * 7
lub
____5________1_____3_
^
5 * 6 = 1 * 3 + 3 * 9
lub
____5___________1_3__
^
5 * 6 = 1 * 6 + 3 * 8
itp
Twój program musi wypisać tylko jedno prawidłowe wyjście. Nie musi generować błędu, jeśli dane wejściowe są niepoprawne.
Notatki
- To jest golf golfowy, więc wygrywa najkrótszy program w bajtach
- Program może być samodzielny lub funkcją, która przyjmuje liczby jako dane wejściowe i zwraca ciąg znaków.
- Przeciąganie nowej linii i białych znaków w ostatnim wierszu jest opcjonalne
- Jeśli nie wiesz, czym jest huśtawka, jest to również znane jako huśtawka lub teeterboard.
Odpowiedzi:
CJam,
403938 bajtówWypróbuj online.
Jak to działa
źródło
CJam,
4644 bajtówSprawdź to tutaj.
Wyjaśnienie
Najpierw spostrzeżenie: nigdy nie musimy umieszczać dwóch cyfr na końcach huśtawki. Ilekroć jest to prawidłowe rozwiązanie, istnieje co najmniej jedno inne prawidłowe rozwiązanie (zgodnie z wklejką w komentarzu do wyzwania).
źródło
Java,
519414321 bajtówMoja pierwsza próba gry w golfa.
Możesz to nazwać za pomocą
f(a,b,c)
. Spróbuj tutajEDYTOWAĆ: Używana metoda kontroli izlin
(a*i+b*j+c*k)==0
EDYCJA: Dzięki, J Atkin za sugestie dotyczące gry w golfa.
źródło
p
naObject a
i używając go zamiast pozostałych 2System.out.print(ln)
sekund.a
jest używany tylko raz, możesz go wstawić.Pyth
67585349 bajtówDla Pyth wydaje się to trochę ogromne, ale nie jestem wystarczająco obeznany z językiem, aby móc go znacznie zmniejszyć.Pod 50 bajtów, w końcu jestem z tego zadowolony!Dane wejściowe są oczekiwane na przykład jako tablica liczb całkowitych
[1,2,3]
. Wypróbuj tutaj.Wyjaśnienie:
I na koniec kilka przykładowych danych wejściowych i wyjściowych:
źródło
C -
237228 bajtówMożesz to nazwać za pomocą
f(a,b,c)
.Wypróbuj tutaj .
Przykładowe wyniki:
źródło
Python 2.7
235226219 bajtówTestowanie z kilkoma podstawowymi przykładami -
(1,1,1),(1,2,1),(3,1,5),(4,7,2)
wyniki w:Wyjścia dla wszystkich możliwych danych wklejonych tutaj
źródło
"".join(l) -> 'l'[2::5]
jest o jeden bajt krótszy (zamień cudzysłowy na backticks).repr
. :)PHP, 278 bajtów
Brute-force rozwiązanie, które wykorzystuje kilka zagnieżdżonych pętli i kilka testów.
Jak zawsze, umieść go w pliku (nazwijmy go
seesaw.php
), dołącz do linii (podziel tutaj, aby był czytelny), umieść znacznik PHP (<?php
) na początku pliku (technicznie rzecz biorąc, nie jest to część programu), a ty ' dobrze iść.Przykład wykonania:
Generuje i wyświetla wszystkie rozwiązania (bez odbić), ale nie usuwa duplikatów (gdy wartości wejściowe zawierają duplikaty).
źródło
Julia, 154 bajty
Niegolfowane + wyjaśnienie:
źródło
C, 252 (214) bajtów
Wywołaj za pomocą a, b, c jako argumentów w wierszu poleceń.
Jeśli main można pominąć, liczba bajtów spada do 214 dla funkcji.
Oba stosują tę samą strategię umieszczania pierwszego odważnika po lewej stronie, a następnie skanowania wzdłuż możliwych pozycji drugiego odważnika i obliczania trzeciego odważnika. Pozwala to na usunięcie wewnętrznej pętli.
źródło