Czas na kolejną praktykę Pyth. Przedstawiam tutaj 8 stwierdzeń problemów z każdym rozwiązaniem Pyth. Te rozwiązania zostały napisane przez początkującego Pythona. Jest bardzo zadowolony z tych rozwiązań, ponieważ są one znacznie krótsze niż odpowiedzi w Pythonie. Twoim zadaniem jest jednak pokazać mu lepiej. Twórz równoważne, ale krótsze programy.
Jest to wyzwanie dotyczące sztuczek i optymalizacji, które można wykorzystać podczas gry w golfa w Pyth. Golfiści Pyth mogą rozpoznać wiele sztuczek, które prowadzą do krótszych rozwiązań. Jednak niektóre problemy będą wymagać nietypowych podejść, które są rzadko stosowane. Niektóre sztuczki, których w rzeczywistości nigdy nie widziałem na wolności. Ale żadne rozwiązanie nie wymaga żadnych błędów ani dziwnego zachowania, które nie było zamierzone przez projektantów Pytha. Wszystkie odpowiedzi muszą być aktualne dla ostatniego zatwierdzenia Pyth ( 2b1562b ) od momentu zamieszczenia tego pytania. Możesz użyć interpretera Pythdla testów. Jest teraz aktualny i nie oczekuję żadnych dużych zmian w Pyth, które unieważnią optymalne rozwiązania lub umożliwią wprowadzenie krótszych rozwiązań. Interpretator online zawiera także nowe odniesienie do postaci. Ponieważ jest całkiem nowy, możesz (powinien) także używać starych dokumentów , na wypadek, gdyby coś było niepoprawne lub brakowało.
Cel: Rozwiązania referencyjne łącznie 81 bajtów. Twoim celem jest pokonanie tego w jak największym stopniu. Zgłoszenie, które rozwiązuje wszystkie 8 problemów z najmniejszą liczbą bajtów, wygrywa. Tiebreaker to data zgłoszenia.
Oczywiście ważne są tylko zgłoszenia, które zawierają rozwiązania wszystkich 8 problemów. Możesz użyć implementacji referencyjnej, jeśli nie możesz poprawić wyniku jednego (lub więcej) określonego problemu.
Twoje rozwiązania muszą wydrukować dokładnie to samo wyjście, co rozwiązania referencyjne. Z wyjątkiem opcjonalnego końcowego znaku nowej linii.
Ponieważ jest to praktyka Pyth, dozwolone są tylko programy napisane w języku Pyth.
Odpowiedź: Proszę zepsuć całą odpowiedź, z wyjątkiem całkowitego wyniku. Celem jest, abyś nie patrzył na odpowiedzi innych ludzi przed przesłaniem własnych. Możesz tworzyć spoilery, umieszczając>! przed każdą linią, np .:
>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...
Mam nadzieję, że nie wybrałem zbyt trudnych lub trywialnych problemów. Mamy nadzieję, że wielu uczestników i wszyscy zyskają kilka nowych wglądów w Pyth. Miłej gry w golfa!
Problem 1:
Utwórz następującą matrycę 9x9 i wydrukuj ją:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]
Rozwiązanie referencyjne ( Link ):
V9m?>dNd0S9 (11 bytes)
Problem 2:
Wydrukuj wszystkie cyfry i wszystkie litery na osobnych wierszach:
0
...
9
a
...
z
Rozwiązanie referencyjne ( Link ):
VTN)VGN (7 bytes)
Problem 3:
Znajdź najmniejszy leksykograficznie palindrom, który jest leksykograficznie większy lub równy niż ciąg wejściowy zawierający małe litery i jest taki sam jak ciąg wejściowy.
a -> a
abc -> aca
adcb -> adda
Rozwiązanie referencyjne ( Link ):
hf&gTzqT_T^Glz (14 bytes)
Problem 4:
Sprawdź, czy liczba mieści się w zakresie [0, numer wejściowy). Powinno to również działać dla pływaków.
4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True
Rozwiązanie referencyjne ( Link ):
&gQ0<QE (7 bytes)
Format odniesienia to to be tested value<newline>end value
. Możesz jednak wybrać inny format wejściowy. Ważne jest tylko to, że wykonałeś opis problemu i uzyskałeś prawidłowe wyniki.
Problem 5:
Analizuj ciąg wejściowy w formacie „\ d + [a-zA-Z] +”. Zauważ, że liczba naprawdę musi być liczbą, a nie ciągiem zawierającym cyfry.
'123Test' -> [123, 'Test']
Rozwiązanie referencyjne ( Link ):
A.ggk\Az,sGH (12 bytes)
Problem 6:
Oblicz sumę liczb oddzielonych jednym lub wieloma przecinkami. Możesz założyć, że w ciągu znajduje się co najmniej jedna liczba.
11,2,,,3,5,,8 -> 29
Rozwiązanie referencyjne ( Link ):
svM:z",+"3 (10 bytes)
Problem 7:
Odczytaj dodatnie liczby całkowite z wejścia, aż pojawi się liczba 0. Wydrukuj sumę wszystkich liczb.
Rozwiązanie referencyjne ( Link ):
WJE=+ZJ)Z (9 bytes)
Problem 8:
Zsumuj wszystkie elementy macierzy kwadratowej, z wyjątkiem tych z głównej przekątnej (od lewego górnego rogu do prawego dolnego rogu).
Rozwiązanie referencyjne ( Link ):
-ssQs.e@bkQ (11 bytes)
Odpowiedzi:
595856 bajtówProblem 1:
Problem 2:
Problem 3:
Problem 4:
Problem 5:
Problem 6:
Problem 7:
Problem 8:
źródło
66 bajtów
źródło
68676665 bajtówZadanie 1
Zadanie 2
Zadanie 3
Zadanie 4
Zadanie 5
Zadanie 6
Zadanie 7
Zadanie 8
źródło
54 bajty
Oto zamierzone rozwiązania. Z wyjątkiem zadania 8 znaleziono wszystkie rozwiązania.
źródło
U
zrobiłl
na listach!60 5957 bajtówZauważ, że opracowałem te rozwiązania całkowicie niezależnie od innych odpowiedzi, chociaż spóźniłem się na przyjęcie.
źródło