Zainspirowany tym pytaniem , Twoim dzisiejszym celem jest zakodowanie adresu URL w pieprzeniu mózgu.
Moja przeglądarka została zhakowana! Pasek lokalizacji został zamieniony w tłumacza pieprzenia mózgu. Potrzebuję programu, który zamienia adres URL w program do pieprzenia mózgu. Mój komputer jest również bardzo wolny, więc jeśli program „pieprzenie mózgu” jest mały, lepiej.
Aha i mam tylko jedną działającą zakładkę otwartą, mój świergot. Możesz więc wysłać mi program tylko w tweecie.
Napisz program, który mieści się w tweecie (140 znaków) w dowolnym języku, który pobiera ciąg znaków jako dane wejściowe i generuje program typu „pierdolony mózg”.
Ten program pieprzenia mózgu zostanie uruchomiony bez danych wejściowych i wygeneruje dane wyjściowe.
Dane wyjściowe zostaną wstawione do paska lokalizacji Google Chrome i wykonane.
Jeśli zachowanie Google Chrome jest identyczne z zachowaniem, które można uzyskać, wprowadzając ciąg wejściowy z punktu 1, oznacza to, że rozwiązanie jest prawidłowe. Przekierowanie przez skracacze URL jest uważane za inne zachowanie - pozostań przynajmniej w tej samej domenie.
Możesz założyć, że tłumacz pieprzony w mózgu ma nieskończoną precyzję liczb całkowitych ze znakiem w każdej komórce i nieograniczoną liczbę komórek.
Twój wynik zależy od sumy długości programów typu „pieprzenie mózgu” wygenerowanych w celu zakodowania następującego zestawu adresów URL:
https://www.google.com/
/codegolf/47895/
http://www.golfscript.com/golfscript/examples.html
http://en.wikipedia.org/wiki/Percent-encoding
ftp://ftp.freebsd.org/pub/FreeBSD/
https://github.com/isaacg1/pyth/blob/master/doc.txt#L92
http://ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README
Najmniejszy wynik wygrywa.
http://www.google.com/
czy kiedykolwiek tak będziegoogle.com
? (Oba są ważne, jeśli chodzi o Google Chrome, ale twoja lista zawiera tylko pełne formularze) PS Mam prawie ochotę napisać rozszerzenie dla Chrome, które to robi ...http://www.google.com/
program brainfuck produkuje wyjściowy możegoogle.com
,www.google.com
itp, bo wszystkie wyniki w tej samej stronie. Ale na przykładftp://ftp.freebsd.org/pub/FreeBSD/
to nie to samo coftp.freebsd.org/pub/FreeBSD/
.ftp://ftp.freebsd.org/pub/FreeBSD/
naprawdę jest tak samo jakftp.freebsd.org/pub/FreeBSD/
w Google Chrome. To sprawia, że wyzwanie jest nieco łatwiejsze niż zamierzałem, ale takie jest życie. Nie zmienię wymagań, więc bezpiecznie jest wcześniej coś po prostu zdjąć://
.Odpowiedzi:
Pyth - 118 bajtów, wynik: 154 + 567 + 597 + 620 + 530 + 875 + 1092 =
6630662346534435Teraz za pomocą algo mnożenia współczynnika!
Jest to dość prosty algorytm, choć nieco lepszy od powyższych.
Planowałem użyć Pytha, ale z obecnym algorytmem Python mieści się <140 bajtów.Go najpierw wycina
http://
przy użyciusplit("//")
awww.
, a/
na końcu. Następnie używa funkcji min, aby sprawdzić, która z trzech rozważanych opcji jest najlepsza:+
lub,-
aby zaktualizować bieżącą wartość komórki do żądanej wartości komórki+
„sNastępnie zawsze umieszczam
.
na wyjściu każdy znak.Szczegółowe wyjaśnienie nowego kodu już wkrótce. Trochę w połowie oceniłem grę w golfa, szczególnie stripping
www.
i/
koniec, ale nie przeszkadza mi to, bo mam 20 bajtów poniżej limitu.To zaskakująco działa na
ftp://
adresy URL, ponieważ jest to chrom i chrom automatycznie sięftp.freebsd.org/pub/FreeBSD/
przekształcaftp://ftp.freebsd.org/pub/FreeBSD/
Planuję następnie użyć słownika do przechowywania wartości komórek i sprawdzić, czy znak został już utworzony w komórce.
Rozszerzenie Omnibox Brainfuck
Zgadza się! Po obejrzeniu komentarza @ BrainSteel wiedziałem, że muszę to zrobić. To nie przejmie całą piszesz, tylko kiedy to zrobić bf, tab. Ponieważ interfejs API omniboksu jest dziwny, nie pozwala mi przesyłać kodu do omniboksu, więc muszę sobie z tym poradzić. Więc
http://
sprawdzam, a potem ustawiam adres URL karty.Ponieważ nie chciałem płacić 5 USD niezbędnych do umieszczenia rozszerzenia w sklepie internetowym, musicie zainstalować go ręcznie. Wystarczy pobrać plik zip tutaj: https://drive.google.com/file/d/0B0qkKIzGc0QiNzBzVUJjZkRIZ0k/view?usp=sharing , rozpakuj, przejdź do strony rozszerzeń w chrome, kliknij pole opcji trybu deweloperskiego w prawym górnym rogu i załaduj rozpakowane rozszerzenie.
Mam nadzieję, że wam się spodoba! :)
źródło
ftp://
adres URL.ftp://
. No cóż.C,
140134132138128139 139 bajtów263 + 816 + 911 + 955 + 827 + 1355 + 1779 =
72696906 bajtówAktualizacja: 6 bajtów mniej, dzięki nutki!
Zaktualizuj ponownie, 128 bajtów. Kod jest znacznie mniej czytelny. Teraz próbuje również usunąć adres URL
ftp://
.Zaktualizuj trzeci, o wielkości 139 bajtów. Kod jest nieco bardziej czytelny i pozbył się nieprzyjemnego, niezdefiniowanego zachowania. Teraz, jeśli nazwa witryny jest poprzedzona znakiem
www.
, jest usuwana. Mam mniej niż 7 000, ale myślę, że muszę przyznać się do Maltysen z Pythem. Dobra robota.Rozpoznano trochę:
Kod ten trwa URL w wierszu polecenia i zamienia go na BF używając tylko
.
,-
i+
. Kod podejmuje próbę pozbawić ciągftp://
,http://
,https://
, iwww.
przed konwersją do BF. Oto lista wyników wyjść:źródło
for(;c-a;a+=c>a,a-=c<a)p(c>a?43:45)
powinno działać.Brainfuck, 77 bajtów, wynik = 31647
Wynik jest sumą
codepoint+4
dla każdej postaci.(Wykorzystuje implementację BF z EOF = 0.)
Przykład:
źródło
JavaScript (ES6) - 137 bajtów, wynik - 7413
Używa tylko ., +i -. Możesz to przetestować w konsoli Firefox.
Oto mój licznik wyników:
źródło