Ta odpowiedź-łańcuchowym wyzwaniem jest oficjalnie ponad, co skutkuje wygraną Pszenica kreatora , w sumie 7 odpowiedzi. Każda inna odpowiedź jest mile widziana, ale nie wpłynie ona na zaakceptowaną odpowiedź na to wyzwanie ani na zwycięzcę.
Zadanie:
Wydrukuj wszystkie dodatnie dzielniki liczby x
podanej jako dane wejściowe.
Wejście:
Pojedyncza liczba, x
która jest liczbą (w podstawie 10), której dodatnie dzielniki należy obliczyć.
Wynik:
Wszystkie pozytywne dzielniki x
. Każdy format jest dozwolone, w tym \n
, ,
, ;
i spacji jako separatory, tak długo, jak jest to zrozumiałe. Wyjściem może być również tablica liczb całkowitych lub ciągów (np [1, 2, 3, 5, 30]
. :) . Możesz wypisać dzielniki na standardowe wyjście, konsolę lub odpowiednik w swoim języku lub można je zwrócić z funkcji .
Zasady
- Użytkownik może nie odpowiadać dwa razy z rzędu
- Twoja odpowiedź może usunąć, dodać lub zastąpić najwyżej 15 znaków z poprzedniej odpowiedzi (białe znaki nie liczą się), oprócz odpowiedzi 2, która może „przekształcić” do 20 znaków, aby rozpocząć.
- Nie możesz opublikować odpowiedzi w języku programowania, który już ma odpowiedź, wyjątkiem jest zupełnie inna wersja tego języka (np .: jeśli opublikuję odpowiedź w
Python 2.7
, możesz przesłać odpowiedź wPython 3
, ale nie wPython 2.6
) - Standardowe luki są niedozwolone
- Teraz nie wolno używać Zabudowy dla dzielników uzyskiwanie , przez wzgląd na to wyzwanie
- Państwo musi zawierać numer odpowiedź i nazwy języka w tytule pytanie, a tym samym liczbę znaków zmieniły się od czasu poprzedniej odpowiedzi
Punktacja
Użytkownik z największą liczbą zgłoszeń wygrywa. W przypadku remisu wygrywa użytkownik z najwyższym wynikiem na jednej z odpowiedzi. Jeśli wynik również jest remisowy, zwycięzcą zostanie ogłoszony użytkownik z najstarszym zgłoszeniem (najstarsza odpowiedź o najwyższym wyniku).
Uwaga: „osiedlić się” <=> 7 minęły 3 dni od przesłania ostatniej odpowiedzi
Przykłady:
Input, Output:
14 => [1, 2, 7, 14]
25 => [1, 5, 25]
65 => [1, 5, 13, 65]
114 => [1, 2, 3, 6, 19, 38, 57, 114]
Lub jakikolwiek inny równoważny wynik spełniający wspomniane warunki.
Uwaga końcowa : To pytanie jest lepsze, jeśli posortujesz odpowiedzi według najstarszych. Opublikuję pierwszą odpowiedź w Pythonie 2.7, więc powinieneś opublikować drugą odpowiedź w zależności od tej. Powodzenia i miłej zabawy!
Tabela liderów:
Ta lista może być nieaktualna, możesz ją swobodnie edytować:
1) Pszenica Kreator [Current Leader 🏆] : 7 Odpowiedzi - Python 1.6 , 05AB1E , Faktycznie , Del | m | t , WSF , Brain-Flak , lenguage
2) Riley: 3 odpowiedzi - Poważnie , CJam , 2sable
3) Jonathan Allan: 2 odpowiedzi - Python 3 , Galaretka
3) ETHprodukcje: 2 odpowiedzi - Japt , Pyth
3) Mistah Figgins: 2 odpowiedzi - Befunge-98 , Brain-Flak Classic
6) Riker: 1 odpowiedź - MATL
6) dzaima: 1 odpowiedź - SOGL 0.8.2
6) LegionMammal978: 1 odpowiedź - Biała spacja
6) Nick Clifford: 1 odpowiedź - Ohm
6) Lynn: 1 odpowiedź - GolfScript
6) MickyT: 1 odpowiedź - Cubix
Kalkulator odległości
Za pomocą tego fragmentu kodu możesz obliczyć odległość między dwoma wpisami:
function L(s,t){if(s===t)return 0;var S=s.length,T=t.length;if(S*T===0)return S+T;for(var i=0,v0=[],v1=[];i<=T;i++)v0[i]=i;for(i=0;i<S;i++){v1[0]=i+1;for(var j=0;j<T;j++)v1[j+1]=Math.min(v1[j]+1,v0[j+1]+1,v0[j]+(s[i]!=t[j]));for(j=0;j<=T;j++)v0[j]=v1[j]}return v1[T]}
<textarea id=A rows=10></textarea><textarea id=B rows=10></textarea><br>
Distance: <span id=O>0</span> <button onclick="O.innerHTML=L(A.value.replace(/\s/g,''),B.value.replace(/\s/g,''))">Run</button>
źródło
Odpowiedzi:
Odpowiedź 20, Flak mózgu , 11
Chciałbym tylko poświęcić czas, aby podziękować wszystkim, którzy przyczynili się do osiągnięcia tego celu:
Riley, 20 bajtów
LegionMammal, 15 bajtów
Produkcje ETH, 11 bajtów
Lynn, 1 bajt
Następujący użytkownicy nie mogli przekazać bajtów bezpośrednio, ale pomogli w inny sposób:
Mistah Figgins
DJMcMayhem
feersum
Dziękujemy wszystkim za umożliwienie tego!
Wypróbuj online!
źródło
Odpowiedź 3: MATL, dystans 15
źródło
%
naprawdę utrudnia kontynuację. Powodzenia dla innych i naprawdę mam nadzieję, że to wyzwanie nie umrze tutaj!Z\
. Odpowiednim kodem jest tutaj:tGw\~)
(który napisałem na czacie, a nie wbudowany)Z\
, nie\
jest „dzielnikami”. Nagłówek w ciągu ostatnich trzech kolumnach wskazuje przedrostek (X
,Y
lubZ
).\
sam w sobie jest pierwszą kolumną, tj. „mod”Odpowiedź 7, Japt, 15
Wypróbuj online!
Zmieniono
#b∫I:b;\?t
naò f!vU
(10 punktów) i dodano trochę kodu Brain-Flak, zmieniając~(()
na((()<>))
(5 punktów). Uważam, że kod, nad którym pracujemy, jestWyjaśnienie
źródło
Odpowiedź 8, 05AB1E , 14
Wypróbuj online!
Wyjaśnienie
Na szczęście 05AB1E ma wbudowany interpreter Pythona (swego rodzaju). Aby wykonać ten bieg, pchamy
jako ciąg na górę stosu. Musimy tutaj używać literałów łańcuchowych zamiast komentarzy, ponieważ 05AB1E naprawdę nie lubi komentarzy w kodzie Pythona. Musimy także pozbyć się
"
oryginalnego kodu, ponieważ powoduje to przedwczesne zakończenie łańcucha.Po wypchnięciu łańcucha używamy go
.e
do wykonania jako kod Pythona.Pracuj w kierunku Brain-Flak
Byłem w stanie dodać 5 dodatkowych postaci w celu uzyskania odpowiedzi Brain-Flak. Byłbym w stanie dodać 6, ale niestety zapomniałem, że białe znaki nie liczą się do wyniku punktowego.
Do tej pory mamy:
źródło
Odpowiedź 13, Pyth , 15
Wypróbuj online!
Wyjaśnienie
Więc nie znam dużo Pytha, ale wiem, że kod źródłowy ma postać drzewa, a każde polecenie ma określoną liczbę argumentów po swojej prawej stronie. Drzewo programu dzielnika, który napisałem, wygląda następująco:
Q
jest wejściem.f
przyjmuje dwa argumenty,F
iA
, i zwraca pozycjeT
wA
którymF(T)
zwraca wartość truthy. W tym przypadkuF
jest funkcją, która zwraca logiczne NIEQ%T
, iA
jestSQ
, co tworzy zakres[1...Q]
. To powoduje filtrowanie tylko do liczb całkowitych,T
w[1...Q]
którychQ%T == 0
.Aby uniknąć parsowania reszty kodu, cała rzecz jest zawijana w łańcuch, a następnie
|Q"...
zwraca logiczną operację LUBQ
łańcucha. PonieważQ
jest zawsze pozytywne, zawsze jest zgodne z prawdą, a zatem zawsze wraca z logicznej OR.Pracuj w kierunku Brain-Flak
źródło
Odpowiedź 16, GolfScript, 15
Wypróbuj online!
Dodałem
~:),(;{\%!},p#
, używając nowej linii jako nazwy zmiennej w celu dopasowania do ograniczenia rozmiaru, i wyciąłem cały program z powrotem w jednym wierszu, aby go skomentować. To była odległość 14. Potem dodałem{
wcześniej}printdiv
dla Brain-Flak.Pracuj w kierunku Brain-Flak
źródło
Odpowiedź 17, CJam , 15
Wypróbuj online!
Pracuj w kierunku Brain-Flak (30 do przejścia)
źródło
)({}(((
do()({})((
kosztem tylko dwóch, to nie jest dokładny program, mieliśmy na myśli, ale()
i({})
to zarówno no-ops w tym kontekście.Odpowiedź 4 - Galaretka , 4
Wypróbuj online!
Odpowiedni kod:
)
Działa jako przerwy między linkami miarę parser jest zaniepokojony (wierzę).Wbudowane byłoby
ÆD
, zamiast tego tworzy zakres od1
do danych wejściowych zR
, sprawdza podzielność przez dane wejściowe za pomocąḍ⁸
, a następnie zwraca listę prawdziwych indeksów opartych na jednymT
.źródło
Odpowiedź 9, Biała spacja, 15
Gdzie
<SPACES>
jest zastąpiony następującym ciągiem, gdzieT
jest 0x09,L
to 0x0A iS
0x20:Dosłowna nowa linia dodana dla przejrzystości. Zauważono, że reguły określają tylko znaki niebiałe. Nie, nie mogłem się powstrzymać.
Pracuj w kierunku Brain-Flak
Nie mam pojęcia, co się działo wcześniej, więc teraz mamy:
źródło
Odpowiedź 18, WSF , 15
(To pobiera dane wejściowe i wyjściowe za pomocą kodu znaków)
Wyjaśnienie
WSF jest w zasadzie pieprzony od mózgu, tyle że używa białych znaków zamiast zwykłego zestawu operatorów. Oto kod zdekompilowany do pieprzenia mózgu:
Postęp w kierunku Flak mózgu
Ponieważ WSF to tylko białe znaki, mogłem dodać 15 dodatkowych znaków do kodu Brain-Flak. To stawia nas w odległości 15 od odpowiedzi, więc możesz ją opublikować.
Ponieważ sam nie zamierzam publikować odpowiedzi na pytanie o móżdżek, pomyślałem, że poświęcę trochę czasu, aby podziękować wszystkim, którzy pomogli w osiągnięciu tego celu:
Riley, 16 bajtów
LegionMammal, 15 bajtów
Produkcje ETH, 11 bajtów
Lynn, 1 bajt
Następujący użytkownicy nie mogli przekazać bajtów bezpośrednio, ale pomogli w inny sposób:
Dziękujemy wszystkim za umożliwienie tego!
źródło
Odpowiedź 19, 2sable , 15
Wypróbuj online!
Usunąłem dodatkowe białe znaki, zawinąłem wszystko, co istniało wcześniej w ciąg, a następnie:
źródło
Odpowiedź 21, Cubix , 15
W końcu udało mi się to dopasować :) Na szczęście jest to po tym, jak odpowiedź Brain-Flak została wykonana, ponieważ myślę, że bym przeszkodził. Potrzebne było pełne 15 do wdrożenia.
Odwzorowuje to na następujący moduł
Możesz go wypróbować tutaj , ale musisz go wkleić. Podejrzewam, że niektóre promocje powodują problemy z połączeniem bezpośrednim.
Kod składa się zasadniczo z 2 wierszy. Ważne części to:
I s )
To pobiera dane wejściowe, zamienia górną część stosu (0 też by działało) i zwiększa% ?
Get mod i test. Jeśli 0 kontynuuje lub upuszcza do przekierowania; O N o
Upuść wyniki modu i wypisz numer, a następnie znak nowej liniiu
U skręć w linię poniżejKolejność jest wykonywana
; - ! @
Usuń 10 ze stosu, odejmij liczbę od wejścia, przetestuj i zakończ, jeśli zero< ; u
Przekieruj cel do pierwszego testu. Usuń górną część stosu (albo modyfikuj, albo odejmij wynik) i odwróć w górę, aby zwiększyćźródło
Odpowiedź 6, Python 1.6, 15
Usunąłem
%
symbole i skomentowałem pierwszą linię i trochę ostatniej linii. Już samo to kosztowało mnie 10 z 15 punktów. Jednak jeszcze nie skończyłem; ponieważ Python 1 nie+=
musiałem wymienići+=1
zi=i+1
kosztowało mnie dodatkowe 3 punkty. Ponieważ pozostały mi 2, dodałem też((
na początek. Planuję złożyć zgłoszenie w Brain-Flak później i potrzebuję parens.źródło
Odpowiedź 10, Ohm , odległość 5
... gdzie
<SPACES>
zastępuje ten monstrualny ciąg z odpowiedzi na Białą Przestrzeń .Trochę bezczelna odpowiedź, ponieważ wszystko inne jest tylko drutem, który leży niewykonany.
źródło
Odpowiedź 12, Poważnie , 15
Wypróbuj online!
Jedyna różnica w stosunku do Właściwie odpowiedź jest taka, że Poważnie wykorzystuje odwrócone, pojedyncze apostrofy, aby zaznaczyć funkcję, gdzie nie używa
⌠
, a⌡
i my po prostu wprowadzić dodatkowe znaki na ciąg następnie pop i wyrzucić ją.Pracuj w kierunku Flak mózgu
źródło
Odpowiedź 14, Del | m | t , 15
Wypróbuj online!
Wyjaśnienie
Naprawdę zaczynam nadużywać faktu, że białe znaki nie są tutaj wliczane do różnicy. Del | m | t tak naprawdę nie dba o to, jakie znaki ci się należy, więc zdecydowana większość kodu to sekwencja spacji i znaków powrotu karetki na początku programu. Rzeczywiste widoczne części kodu wcale nie są wykonywane.
Oto kod przepisany w bardziej „rozsądny” sposób:
Wypróbuj online!
Jak to działa na niskim poziomie
Na początek mamy
O R ^ V
to do pobrania danych z pierwszej pętli i działa jako no-op przez cały czas.Następnie
O
wykonujemy kopię danych wejściowych na później.@ A K T
przywołuje zmienną zapisaną w pozycji pamięci -1 (na początku programu jest to 0) iA J
zwiększa ją.O @ A K U
Przechowuje teraz zwiększoną wartość z powrotem w pozycji pamięci -1 dla naszej następnej pętli.N
oblicza mod kopii danych, które zrobiliśmy jakiś czas temu, a wartość właśnie przywołana z pamięci iR
neguje ją.Razem
N R
stworzymy wartość logiczną, która wskazuje, czy nasze dane wejściowe są podzielne przez warunki świadczenia usługi.Przechowujemy kopię tego boolean do pamięci -2 za pomocą
O @ B K U
i przywołujemy wartość z pamięci -2 za pomocą@ A K T
.Zamieniamy dwa górne elementy,
Q
aby upewnić się, że wartość logiczna jest na górze, i wyświetlamy wartość, jeśli wartość logiczna jest prawdziwa, używając^ X
.Jeśli wartość logiczna była fałszywa, mamy dodatkową wartość, którą należy wyeliminować, dlatego przywołujemy wartość logiczną, którą zapisaliśmy w przestrzeni -2,
@ B K T
i wpisujemy wartość, jeśli jest fałszywaR ^ P
.Powielamy wartość wejściową za pomocą
O
i odejmujemy wartość w pamięci -1 za pomocą@ A K T K
. Jeśli jest to zero, wychodzimyR ^ _
.Na koniec
@ ^
pomijamy tę wartość niezależnie od następnej wartości. Potrzebujemy tego, ponieważ istnieje@
widoczna część śmieci (właściwie tylko symbol) generowanych przez widoczną część kodu.Gdy osiągnie koniec, zapętla się z powrotem do początku.
Jak to działa na wysokim poziomie
Podstawową ideą jest to, że mamy wartość przechowywaną głównie w pamięci -1, która jest zwiększana za każdym razem, gdy zapętlamy. Jeśli ta wartość dzieli nasze dane wejściowe, generujemy je, a gdy te dwie wartości są równe, kończymy wykonywanie.
Postęp w kierunku Flak mózgu
Ponieważ białe znaki nie liczą się do różnicy, mogłem zmienić kod nie wydając żadnego z moich 15 punktów, a zatem wszystkie zostały zainwestowane w kod Brain-Flak.
Oto nasza obecna pozycja.
źródło
Odpowiedź 15, Befunge-98, 15
Wypróbuj online!
(Prawdopodobnie jest wiele niepotrzebnych białych znaków, ale nie mogę teraz zawracać sobie głowy golfem)
Użyłem wszystkich 15 do programu Befunge, więc tym razem bez zmian w Mózgu.
Moją główną strategią było wysyłanie adresu IP w pionie i używanie białych znaków do wykonywania niektórych znaków z istniejącego kodu.
Wyjaśnienie:
Kod, który ma znaczenie dla programu Befunge, jest następujący:
Co odpowiada:
źródło
Odpowiedź 2 - Python 3 , 5
Wypróbuj online!
źródło
async
lubawait
wbudowanych? Czy to by się liczyło jako zupełnie inny język?Odpowiedź 5 - SOGL 0.8.2 , 9
Wyjaśnienie:
Uwaga: interpreter wymaga obecnie
\n
zastąpienia s¶
, aby nie liczyć go jako danych wejściowych, ale sam parser uważa oba wymienne.źródło
Odpowiedź 11, właściwie 15
Wypróbuj online!
Wyjaśnienie
W rzeczywistości ma ładne wbudowane narzędzie
÷
do wyszukiwania czynników liczby, jednak nie wolno nam używać takich wbudowanych funkcji.Zaczynam od przechowywania danych wejściowych do rejestrów, aby nie miało to wpływu na to, co nadejdzie. Robię to za pomocą,
╩
ale równie łatwo mogę użyć jednego z innych dostępnych poleceń.Następnie wklejam kod, który już mieliśmy (usunąłem wszystkie białe znaki, ponieważ praca z nimi była denerwująca, mogę to zrobić, ponieważ „białe znaki się nie liczą”). Na szczęście to nic nie robi, gdy stos jest pusty.
Następnie mamy resztę programu
Pracuj w kierunku Flak mózgu
Cała ta praca i mogłem dostać tylko jednego dodatkowego parena.
źródło
[]
dołączymy kod Brain-Flak , możemy mieć kod Brainfcuk po nim. Może otworzyć możliwości.23, Brain-Flak Classic, 13
Początkowo @Wheat Wizard opublikował klasyczny kod typu flak mózgu, tak jak w odpowiedzi na 22:
To jest 17 znaków. Byłem jednak w stanie to skompresować, po prostu przesuwając
{})
dalej w prawo w proponowanym kodzie, aby uzyskaćTo jest tylko 13 znaków! Więc wszystko, co zrobiłem, to dodawanie / usuwanie nawiasów, aby uzyskać proponowany kod.
Oryginalny kod, który opublikowałem, miał literówkę, teraz jest naprawiony. ( Dzięki @WheatWizard! )
źródło
Odpowiedź 1 - Python 2.7
Odległość: NA - pierwsza odpowiedź
Wypróbuj online!
źródło
22, Lenguage , 15
Lenguage to esolang, który dba tylko o to, jak długo program nie dotyczy jego zawartości. Możemy więc stworzyć dowolny program lenguage, który chcemy, wypełniając ostatni program odpowiednią ilością białych znaków. Lenguage jest wkompilowany w pieprzenie mózgu, więc użyjemy ponownie tego programu, który napisałem jakiś czas temu
Wprowadziłem kilka zmian w programie głównym, aby ułatwić późniejsze odpowiedzi, ale efekt końcowy wygląda następująco:
gdzie
<SPACES>
reprezentuje 55501429195173976989402130752788553046280971902194531020486729504671367937656404963353269263683332162717880399306 znaków spacji.Czy nadużywam białych znaków nie liczy się zasada? Być może.
Pracuj w kierunku Brain-Flak Classic
Mieliśmy już wszystkie te pareny, więc pomyślałem, że zacznę od drogi w kierunku Brain-Flak Classic.
źródło