Pyth Practice 2

21

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)
Jakube
źródło
Naprawdę podoba mi się pomysł pytań specyficznych dla języka (i już to głosowałem). Ale myślałem, że PPCG nie znosi pytań specyficznych dla języka?
Luis Mendo
3
@LuisMendo Myślę, że pytania związane z konkretnymi językami są niezadowolone, jeśli powodem tego pytania jest ogólna niechęć do języków golfowych, takich jak CJam, Pyth, ... lub ponieważ OP rozumie tylko niektóre języki. Tutaj jest trochę inaczej. To pytanie ma głównie na celu pokazanie niektórych bardziej ukrytych funkcji popularnego (na PPCG) języka. W pewnym sensie jest to zbiór sztuczek. Nie ma sensu pozwalać na to w każdym języku. Oto Meta-post na ten temat: link
Jakube
W 6, czy liczby są dodatnimi jednocyfrowymi liczbami całkowitymi?
xnor
@ xnor Możesz założyć, że są dodatnie, ale mogą składać się z więcej niż jednej cyfry. Zmienię przypadek testowy.
Jakube,
1
Głosuję za zamknięciem tego pytania jako nie na temat, ponieważ jest to wieloczęściowe wyzwanie bez interakcji między częściami
pppery

Odpowiedzi:

9

59 58 56 bajtów

Problem 1:

j.tmLdS9Z (9 bajtów)

Problem 2:

MTjG (5 bajtów) (pierwszy znak to nowy wiersz)

Problem 3:

h.f_IZ1z (8 bajtów)

Problem 4:

%IQE (4 bajty)

Problem 5:

,J.vz-zJ (8 bajtów)

Problem 6:

srXz\,d7 (8 bajtów)

Problem 7:

u+GE0 (5 bajtów)

Problem 8:

ss.DR~hZQ (9 bajtów)

isaacg
źródło
2

66 bajtów

1. 10 bajtów: V9+mZN}hN9
2. 6 bajtów: jUT)jG
3. 8 bajtów: h.f_IZ1z
4. (implementacja referencyjna) 7 bajtów: &gQ0<QE
5. 11 bajtów: ,sK-rzZG-zK
6. 7 bajtów: ssMcz\,
7. 8 bajtów: s<.Qx.QZ
8. 9 bajtów:ss.eXbkZQ

Maltysen
źródło
2

68 67 66 65 bajtów

Zadanie 1

10 bajtów: V9m*d>dNS9

Zadanie 2

5 bajtów: \nMTjGgdzie \njest nowy wiersz

Zadanie 3

9 bajtów: h.fqZ_Z1z

Zadanie 4

5 bajtów: qQ%QE

Zadanie 5

Rozwiązanie referencyjne, 12 bajtów: A.ggk\Az,sGH

Zadanie 6

7 bajtów: ssMcz\,

Zadanie 7

8 bajtów: s<.Qx.Q0

Zadanie 8

9 bajtów: ss.DVQUlQ

lirtosiast
źródło
1

54 bajty

Oto zamierzone rozwiązania. Z wyjątkiem zadania 8 znaleziono wszystkie rozwiązania.

1. j.tmLdS9Z (9 bajtów) przy użyciu mapy dla mapy po lewej, transponuj i wypełnij zerami
2. \ nMTjG (5 bajtów) użyj znaków nowej linii dla mapy
3. h.f_IZ1z (8 bajtów) wygeneruj możliwe ciągi z .f
4 .% IQE (4 bajty) znalazło przypadek użycia, w którym niezmienny operator potrzebuje 2 parametrów
5., J.vz-zJ (8 bajtów). V ocenia tylko pierwszą instrukcję łańcucha i ignoruje pozostałe
6. ssMcz \, ( 7 bajtów) s "" = 0
7. u + GE0 (5 bajtów) zmniejszaj, aż osiągnie
znaną liczbę 8. ss.DVQUQ (8 bajtów) usuń przekątną za pomocą wektoryzacji

Jakube
źródło
Cholera, zapomniałem Uzrobił lna listach!
lirtosiast
1
Fajnie bije isaacga we własnym języku.
Stan Strum,
1

 60 59  57 bajtów

1. 9 bajtów :j.tmRdS9Z


2. 6 bajtów :jbUTjG


3. 8 bajtów :h.f_IZ1z


4. 4 bajty :}sEU


5. 8 bajtów :,K.vz-zK


6. 7 bajtów :ssMcz\,


7. 8 bajtów :s<FxB.Q0


8. 11 10 7 bajtów : ss.DVQU poprzednia wersja:ss.e+<bk>bh

Zauważ, że opracowałem te rozwiązania całkowicie niezależnie od innych odpowiedzi, chociaż spóźniłem się na przyjęcie.

Pan Xcoder
źródło
Niezła próba. Trzeci problem to 8 bajtów.
Jakube,
I jestem całkiem pewien, że rozwiązanie problemu 8 nie skompilowało się wtedy. Ale nie przetestowałem tego.
Jakube,
@Jakube Och, dziękuję za zauważenie!
Pan Xcoder,