Biorąc pod uwagę ściśle dodatnią liczbę całkowitą n , wykonaj następujące kroki:
- Utwórz tablicę A za pomocą n 1 s.
- Jeśli A ma tylko jeden element, zakończ. W przeciwnym wypadku, począwszy od pierwszego elementu, wymienić każdą parę A z sumy, pozostawiając ostatni element jak gdyby długość jest to dziwne, i powtórzyć tę czynność.
Dane wyjściowe powinny zawierać stan A po każdym kroku w kolejności od pierwszego do ostatniego kroku. Korzystanie ze standardowych luk jest zabronione. Jest to wyzwanie dla golfisty , więc wygrywa rozwiązanie z najmniejszą liczbą bajtów w każdym języku.
Przypadki testowe
Każda linia w wynikach tych przykładów jest stanem. Możesz drukować w dowolnym rozsądnym formacie.
Wejście: 1
[1]
Wejście: 4
[1, 1, 1, 1]
[2, 2]
[4]
Wejście: 13
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[2, 2, 2, 2, 2, 2, 1]
[4, 4, 4, 1]
[8, 5]
[13]
Wejście: 15
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[2, 2, 2, 2, 2, 2, 2, 1]
[4, 4, 4, 3]
[8, 7]
[15]
code-golf
arithmetic
Erik the Outgolfer
źródło
źródło
Odpowiedzi:
05AB1E , 7 bajtów
Wypróbuj online!
źródło
MATL , 10 bajtów
Wypróbuj online!
Jak to działa
źródło
Python 3 , 57 bajtów
Wypróbuj online!
Python 2 , 51 bajtów
Wypróbuj online!
-6 bajtów ogółem dzięki tsh
Funkcja rekurencyjna. Dla każdego kroku konstruuje listę potęg
2
takich, że suma jest mniejsza lub równa podanej liczbie całkowitej. Następnie dołącza resztę, jeśli jest większa niż0
.źródło
def f(i,j=1):l=i//j*[j]+[i%j][:i%j];print(l);i>j and f(i,j*2)
; Python 2 55 bajtów:def f(i,j=1):l=i/j*[j]+[i%j][:i%j];print l;i>j>f(i,j*2)
i>j
nie działało w moim poprzednim rozwiązaniu i zapomniałem go później wypróbować.Galaretka , 6 bajtów
Wypróbuj online!
źródło
R , 65 bajtów
-1 bajt dzięki Giuseppe.
Wypróbuj online!
%/%
%%
k=2^i
n%/%k
k
n%%k
Tutaj używam
T
zamiastk
, ponieważ jest on inicjalizowany, ponieważTRUE
jest konwertowany na 1. Nadal muszę drukować+T
zamiastT
unikać wektoraTRUE
s na wyjściu.źródło
+T
jest krótszy niżT+0
Pyth , 10 bajtów
Wypróbuj online!
-1 bajt dzięki FryAmTheEggman
źródło
JavaScript (V8) , 109 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) ,
5554 bajtówWypróbuj online!
WreszcieSow
/Reap
bije alternatywę!Zwraca listę singletonów zawierającą listę kroków.
źródło
K (oK) ,
1517 bajtówWypróbuj online!
źródło
J ,
2017 bajtówWypróbuj online!
-5 bajtów dzięki Bubblerowi
źródło
[:
i()
.Galaretka , 6 bajtów
-1 bajt dzięki Erik the Outgolfer .
Wypróbuj online!
źródło
JavaScript, 55 bajtów
Wypróbuj online!
Jest to w zasadzie golfowa wersja następujących kodów:
źródło
Japt
-R
, 13 bajtówSpróbuj
źródło
Brachylog , 17 bajtów
Wypróbuj online!
Jak strasznie długo, jak to jest, nadal czuję się trochę mądrego korzystania
.ẉȮ
: oczywistym sposobem coś wydrukować, a następnie sprawdzić, czy jego długość wynosi 1 byłobyẉ₂l1
,ẉ₂~g
lubẉ₂≡Ȯ
, w przypadku gdy≡
w ostatnim z nich jest konieczne, ponieważẉ₂
jednoczy jego wejście i wyjście przed wydrukowaniem ich iȮ
jest wstępnie ograniczony do listy o długości 1, więc unifikacja kończy się niepowodzeniem, jeśli dane wejściowe nie są listą o długości 1. Na końcu predykatuẉ₂
można ominąć tę cechę używając zmiennej wyjściowej zamiast subskrybowaniaẉ
:.ẉȮ
najpierw ujednolica dane wejściowe ze zmienną wyjściową, następnie drukuje zmienną wyjściową, a dopiero potem ujednolica zmienną wyjściową zȮ
.źródło
Stax , 10 bajtów
Uruchom i debuguj
Procedura:
Źródło adnotacji:
źródło
Węgiel drzewny , 19 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Używa domyślnego formatu wyjściowego Charcoal, który jest jedną liczbą w wierszu, z podwójnymi odstępami między nimi. Wyjaśnienie:
źródło
Perl 5 , 46 bajtów
Wypróbuj online!
Dane wyjściowe są oddzielone spacją.
źródło
Perl 6 , 38 bajtów
Wypróbuj online!
Istnieje skrót do częściowego wirowania, którego teraz nie pamiętam ...
Wyjaśnienie:
źródło
Haskell , 75 bajtów
Wypróbuj online!
Działa wstecz z listy
[n]
aż osiągnie listę tylko tych.Idąc do przodu, mogę dostać 80 bajtów korzystania
chunksof
zData.List.Split
:Wypróbuj online!
źródło
Keg , 30 bajtów
Wypróbuj online!
Przez pewien czas miałem zamiar ukończyć to wyzwanie (mam na myśli, że wysłałem sobie link do niego, aby zapamiętać), ale do tej pory nigdy tego nie zrobiłem!
źródło
GolfScript , 24 bajty
Strasznie długa odpowiedź ... odegrał 1 bajt, używając trudnego do odczytania formatu wyjściowego
Wypróbuj online!
Wyjaśnienie
źródło
Ohm v2 , 8 bajtów
Wypróbuj online!
Jeśli dane wyjściowe w notacji naukowej są dozwolone, w przeciwnym razie:
Ohm v2 , 9 bajtów
Wypróbuj online!
źródło
Gaia , 12 bajtów
Wypróbuj online!
źródło
APL, 28 znaków
wektor 1s
wypisz argument i sprawdź, czy długość jest inna niż 1: jeśli tak, kontynuuj
dostać połowę długości i zaokrąglić w górę
przekształć w macierz nx2, dodając końcowe 0, jeśli to konieczne
suma rząd po rzędzie
powrócić
źródło