Zostało to zainspirowane problemem matematycznym, który widziałem gdzieś w Internecie, ale nie pamiętam gdzie (AKTUALIZACJA: Oryginalny problem został znaleziony na łamach zagadek matematycznych z dowodami, pod warunkiem, że jest to możliwe, zobacz także ten post Math SE ), prosząc o dowód, czy możliwy jest następujący proces dla dowolnej dowolnej liczby całkowitej (z tego co pamiętam, było możliwe dla dowolnej pary):
Biorąc pod uwagę parę liczb całkowitych, j i k, należy podwoić jedną z nich i dodać jedną do drugiej, co daje parę nowych liczb całkowitych, tj. (J, k) -> (j + 1, k * 2) lub (j * 2, k + 1). Następnie powtórz ten proces z liczbami całkowitymi, aby para liczb całkowitych była równa.
Podane przykłady niekoniecznie są optymalne, ale pokazują, jak można wykonać ten proces na liczbach całkowitych, dodatnich, ujemnych lub zerowych:
(2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(5, 6) -> (6, 12) -> (7, 24) -> (14, 25) -> (28, 26) -> (56, 27) -> (112, 28) -> (113, 56) -> (226, 57) -> (227, 114) -> (228, 228)
(0, 2) -> (1, 4) -> (2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(-4, 0) -> (-3, 0) -> (-2, 0) -> (-1, 0) -> (0, 0)
(3, -1) -> (6, 0) -> (12, 1) -> (13, 2) -> (14, 4) -> (15, 8) -> (16, 16)
(-4, -3) -> (-8, -2) -> (-16, -1) -> (-32, 0) -> (-31, 0) -> ... -> (0, 0)
Wyzwanie
Utwórz program, który podał dwie liczby całkowite, wyświetla listę kroków wymaganych do wyrównania tych liczb całkowitych poprzez wielokrotne zwiększanie jednego i podwajanie drugiego
Dane techniczne
- Rozwiązanie nie musi być optymalne, ale musi zostać rozwiązane w skończonej liczbie kroków dla dowolnej dowolnej pary
Dane wejściowe muszą być dwiema liczbami całkowitymi
Wyjściem może być każdy rozsądny wynik, który wyraźnie oznacza wynikowe liczby całkowite każdego kroku, na przykład:
- ciąg z dwoma wyraźnymi ogranicznikami (dowolny symbol, biała spacja itp.), po jednym dla każdej liczby całkowitej w parze i po jednym dla każdej pary
- np. wejście j, k: 2, 5 -> wyjście: 3,10; 6,11; 12,12
- lista list liczb całkowitych
- np. wejście j, k: 2, 5 -> wyjście: [[3, 10], [6, 11], [12, 12]]
- ciąg z dwoma wyraźnymi ogranicznikami (dowolny symbol, biała spacja itp.), po jednym dla każdej liczby całkowitej w parze i po jednym dla każdej pary
Jeśli dane wejściowe to para równych liczb, możesz wypisać cokolwiek, o ile jest to zgodne z innymi nietrywialnymi odpowiedziami
- na przykład
- jeśli wejście [2, 5] ma wyjście [[3, 10], [6, 11], [12, 12]], które nie obejmuje pary wejść, wówczas wejście [4, 4] nie powinno nic wypisywać.
- jeśli wejście [2, 5] ma wyjście [[2, 5], [3, 10], [6, 11], [12, 12]], które obejmuje parę wejściową, wówczas wejście [4, 4] powinno wyjście [[4, 4]].
- na przykład
Obowiązują standardowe metody IO, a standardowe luki są zakazane
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź w bajtach
[(12,12),(6,11),(3,10),(2,5)]
Na wejście (2,5)
?