Cała Twoja baza należy do nas (ograniczona)


57

Dane wejściowe nie mogą być wymagane, a dane wyjściowe muszą zawierać tekst „ All your base are belong to us”.

Ograniczenia

  • Brak zasobów zewnętrznych.

    Plus co najmniej dwa z poniższych:

  • W żadnym wypadku nie możesz używać „a”, „b”, „t”, „u” ani „y” w kodzie (premia -10 do wyniku golfa, jeśli możesz to zrobić)

  • Nie możesz w żadnym wypadku używać kodu „l”, „o”, „s”, „e” lub „r” (bonus -20 do wyniku golfa, jeśli możesz to zrobić)

  • Nie możesz w żadnym wypadku używać kodu „n”, „g”, „0”, „1” lub „2” (jeśli to możliwe, premia -30 do wyniku golfa)

Na przykład, jeśli uda ci się wykonać kod z 40 znakami i użyjesz reguł 1 i 2, twój wynik w golfa wynosi 40 - 10 - 20 = 10 znaków.

Wygrywa najmniejszy wynik golfowy kod ... Powodzenia!


5
Tyle deklarowania stringprzerwy wszystkie trzy ograniczenia, i char, vari Writezłamać dwa z nich każdy. Trudno będzie uzyskać prawidłowe odpowiedzi, może Barinfuck.
Hand-E-Food

7
„nie wymaga wprowadzania danych ”. Czy to nie znaczy, że mógłbym na przykład zrobić coś takiego print(input())(python)? Użytkownik będzie musiał wprowadzić poprawny ciąg, ale nie jest to zabronione.
Justin

5
@Quincunx Nie zaakceptowałbym takiego rozwiązania, ponieważ nie można zagwarantować , że kod wyświetli prawidłowe rozwiązanie. Ponadto stdinjest prawdopodobnie „źródłem zewnętrznym”.
nitro2k01

2
@PranavHosangadi Na to pytanie została usunięta odpowiedź z wynikiem -6, który jest zasadniczo taki sam. Zostało to zrobione wiele razy w różnych pytaniach i jest wyraźnie niedozwolone w tagu golf-code .
Gareth

1
Zgodnie ze standardowymi regułami code-golf odpowiedzi w latin1 / unicode / name, których charmap jest oceniany w bajtach po konwersji na utf-8. Czy mamy tak liczyć, czy wybrałeś inną metodę punktacji? Obecny lider miałby wtedy 0, a nie -40.
Sylwester

Odpowiedzi:


4

SOGL V0.12 , 15–60 = -45

šz█P'zUS½█│β3‘⁾

Wypróbuj tutaj!

šz█P'zUS½█│β3‘Jest to skompresowany ciąg all your base are belong to us, ale dlatego, że dokładny ciąg sprężone zawarte 0, to podzielone na 3 części: all your base are, , belong to us(który kosztował jeden bajt, ale dał premię -30 bajtów). Pierwszy i ostatni ciąg są kompresowane ze słownikiem angielskim SOGL i domyślnie łączone spacjami. Pozostała część jest prostym wbudowanym przypadkiem zdania.
Pamiętaj, że SOGL publikuje datę tego wyzwania, ale jest to dozwolone teraz.


Muszę tylko zapytać ... Jak ??? Czy mamy tutaj do czynienia z jakąś sprytną techniką kompresji? Nic nie wiem o SOGL ...
WallyWest

45

GolfScript, -22 (38 znaków, -60 bonus)

"„¯¯c¼²¸µc¥¤¶¨c¤µ¨c¥¨¯²±ªc·²c¸¶"{67-}%

4
Jak to działa?
Facet z kapeluszem

37
@RyanCarlson Magic.
Howard

4
"..."definiuje ciąg, a blok {}%wykonuje operację mapowania na wszystkich znakach. Wewnątrz bloku wartość ascii jest dostępna na stosie i 67-odejmuje 67 od każdej wartości ascii.
Howard

4
OK, wielkość liter jest prawdopodobnie niewłaściwym słowem, ale wiesz o co mi chodzi. Jestem prawie pewien, że indeks górny 2 to nadal 2, więc Zasada 3 nie została spełniona.
Trent

3
@FizzBuzz Wiem, co próbujesz powiedzieć, ale myślę, że ważne jest to, że 2 i ² to różne glify z wyraźnymi punktami kodowymi. Można argumentować, że w sensie denotacyjnym są one tym samym symbolem, ale myślę, że jest to znacznie bardziej abstrakcyjna interpretacja niż zasadne pytanie.
Jordan Gray

36

Sclipting , −40

뀖롬긇땯덗긠눦굳뉒걡댦넠눦녬닶멧긇끯긇녳
  • = 20 znaków - 60 premii
  • Działa tylko wtedy, gdy dane wejściowe są puste, co uważam za przypadek; jeśli nie, dodaj z przodu, zmieniając wynik na -39.
  • Jeśli mogę założyć, że dane wejściowe są tym, czego chcę (jak najwyraźniej robi to odpowiedź ), to pusty program jest rozwiązaniem, a mój wynik to -60.

Cóż, "input is not required"jak powiedziałem, więc rzuciłem 丟 z przodu i zmieniłem wynik na -39, ale wielki wysiłek! Zwłaszcza, że ​​wymyśliłeś język, stary!
WallyWest

1
Widząc w Korei koreańskie sylaby w kodzie, jest niesamowita.
Matthew Roh

29

JavaScript - 140 bajtów - 60 premii = 80 punktów

(x="Ǎľľ y̌ǒǔř b̌ǎšě ǎřě b̌ěľǒňǧ ťǒ ǔš")[x[3*9]+x[34]+"p"+x[4]+x[5*5]+"c"+x[34]]("̌","",x[6*7])

Uruchom w przeglądarce Firefox.

Wiem, o czym myślisz. Nie, to nie są znaki wymienione w pytaniu. Są to postacie z karonem lub háčkiem (wybierane losowo z listy znaków diakrytycznych). Mimo że łączą znaki, nie są dwiema osobnymi postaciami.


Node.js REPL:String.fromCharCode(65,108,108,32,121,111,117,114,32,98,97,115,101,32,97,114,101,32,98,101,108,111,110,103,32,116,111,32,117,115);
nick indiessance

28

APL (43–30–20 = -7)

⎕AV['⊥┤┤ ø┼&┐ `∣┘û ∣┐û `û┤┼─ù ´┼ &┘'⍳⍨⌽⎕AV]

Spełnia to zasady 2 i 3.


Trudno będzie to pokonać!
Paul Prestidge

1
czy to zwraca wynik, czy go drukuje?
Aaron Davies

@AaronDavies: oba wyniki są automatycznie drukowane
marinus

@marinus Próbowałem tego na TryAPL.com i dostałem INVALID TOKENbłąd .... być może od początkowej i modyfikującej postaci przed AV ... Czy jest jakieś inne miejsce, w którym mogę to przetestować ...?
WallyWest

@WallyWest: użyj Dyalog APL ( dyalog.com ). Uzyskaj niezarejestrowaną wersję, to nic nie kosztuje. TryAPL jest tak ograniczony, że prawie bezużyteczny.
marinus

28

Brainfuck, 267 - 60 = 207

++++++++[>++++++++<-]>+.<+++++++[>++++++<-]>+..>>++++++[<+++++>-]<++.<+++++++++
++++.----------.++++++.---.>.<<++++[>----<-]>.-.<+++[>++++++<-]>.--------------
.>.<----.<++++[>++++<-]>+.-------------.>.<---.+++.+++++++.+++.-.-------.>.<+++
++++++++++.-----.>.<++++++.--.

Zastanawiam się, czy można to jeszcze bardziej zmniejszyć? :)
WallyWest

2
fbonetti radził sobie lepiej w swojej odpowiedzi Brainfuck.
Hand-E-Food

2
I FIQ zrobiło się jeszcze lepiej 4 dni później
schnaader

22

HTML / CSS 70

<p style="transform:rotate(.5turn)">sn oʇ ƃuoləq əɹɐ əsɐq ɹnoʎ llɐ</p>

http://jsbin.com/EjekuvuF/1/

Pomyślałem, że jestem sprytny z typem do góry nogami, ale potem zdałem sobie sprawę, że nie jestem w stanie spełnić żadnej z pomocniczych reguł z faktycznym HTML / CSS. No cóż.

AKTUALIZACJA:

Użytkownik Flame zasugerował rozwiązanie bardziej zgodne z różnymi przeglądarkami:

<p style="transform:rotate(180deg)">sn oʇ ƃuoləq əɹɐ əsɐq ɹnoʎ llɐ</p>  

http://jsbin.com/EjekuvuF/6


Sądzę, że możesz użyć odwołań do znaków XML, aby uratować sytuację.
MvG

3
Podoba mi się pomysł tego rozwiązania.
Sumurai8,

Dam też rekwizyty ... myśl z jakiegoś powodu transform:rotate(.5turn)rozwiązuje błąd składniowy ... Podoba mi się wyobraźnia ...
WallyWest,

@WallyWest Nie testowałem we wszystkich przeglądarkach. Założę się, że może to być specyficzne dla przeglądarki, a nie oficjalna składnia W3C. (Działa jednak w Chrome)
DA.

3
Powinieneś użyć ∀ zamiast ɐ :)
Timwi

12

MATLAB, Wszystkie bonusy: Wynik -20 (40-60)

['' '¤ÏÏèÜÒØÕèÅÄÖÈèÄÕÈèÅÈÏÒÑÊè×ÒèØÖ'-99]

EDYTOWAĆ:

Pamiętaj, że nie jestem pewien, jakie są wymagania systemowe, aby to uruchomić, przetestowane w systemie Windows. Dla tych, którzy próbują kopiować, można wygenerować podobny kod:

char('All your base are belong to us' + 99)

Gdyby można było prosić o cokolwiek jako dane wejściowe, oczywiście byłoby możliwe rozwiązanie z mniejszą liczbą postaci (ale także z brakiem premii).

input('')

Proszę wyjaśnić, w jaki sposób masz zamiar wyjścia cokolwiek używając tylko input. Druga odpowiedź to (afaik) po prostu nieprawda.
DJSpud

2
@Jhawins: MATLAB wyświetla wynik każdego wyrażenia, które nie kończy się średnikiem. input('')Rozmowa nie kończy się średnikiem, a więc będzie generować moc.
Ben Voigt

6
Jeśli to prawda, to moja odpowiedź JS brzmi „ prompt()
DJSpud

Powłoka byłaby dd, ale być może liczy się to jako zasób zewnętrzny. Oczywiście również wkład użytkowników.
gerrit

Próbowałem uruchomić to i otrzymałem następujące: _A ,, E9 /5 2E "! 3% E! 2% E" %, /. 'E 4/ E5'3 Rozumiem pierwszą odpowiedź, ale druga odpowiedź wymaga danych wejściowych, które, jak powiedziałem, nie były„ wymagane ”
WallyWest,

10

k (-7 = 53 - 60)

(#`)"c"$(465%3)-6h$"Z//{\",&){9:(6{:)6{96/,-4{',{&(";

nie zawiera końcowego nowego wiersza, można go dodać kosztem jednego dodatkowego znaku:

(-#`)"c"$(465%3)-6h$"Z//{\",&){9:(6{:)6{96/,-4{',{&(";

irytujące, jedyne przesunięcia, które działają dla tej lewy to 154 i 155

edytować:

jeśli wystarczy wyświetlić ciąg (zamiast go wydrukować), jak podejrzewam, że działa rozwiązanie APL (nie działa w http://tryapl.com/ , więc nie mogę go poprawnie przetestować), to

  "c"$(465%3)-6h$"Z//{\",&){9:(6{:)6{96/,-4{',{&("
"All your base are belong to us"

czyli -12 = 48 - 60. czy mogę uzyskać orzeczenie, czy to wystarczy?


Nigdy nie prosiłem o końcową nową linię ... :)
WallyWest,

10

dc, 97 - 60 = 37 91 - 60 = 31 88 - 60 = 28 81 - 60 = 21

3C87596P4d^8/P7958389P7479394P6386533P7C89P749698CP644848CP459 8^699 7^3849736388974773333 86-++P

Ulepszona wersja (głównym pomysłem jest tutaj zróżnicowanie bazy danych wejściowych, aby zwiększyć szanse na znalezienie przydatnej dużej liczby bez problematycznych cyfr):

IDi67793554D647F84C836645D6569F69Pi6385C77P9i35PDdi6^I9^+6D59CD83D664D34+P8CPFi98CCF5PCi97P

W bazie 7 całość może stać się pojedynczą liczbą! Dolne podstawy są naturalnie mniej kompaktowe, ale nadrabia to brak operacji naprawczych.

7i4398873968644388737548444897643735447698675366869556798538985674336396359936458859886P

Moje pierwsze rozwiązanie stosowane podstawa 10. Mój drugi używany mieszankę podstawą 9, 10, 12, 13 i 15. Ten jest w bazie 7. Ja naprawdę czuję jak cała baza należą do mnie.

Ostatni, poważnie: baza 13 wykonuje świetną robotę w pierwszym segmencie, a następnie baza 7 w pozostałej części.

Di67793554D647F84C836645D6569F69P7i798789699638355733695878558396339387963789536P

Innymi słowy, wszystkie twoje bazy 7 należą do ciebie, @Wumpus?
WallyWest,

10

Python REPL, 122 116 98 znaków - 30 bonusów = 92 86 68 punktów

>>> '\x41\x6c\x6c \x79\x6f\x75\x72 \x62\x61\x73\x65 \x61\x72\x65 \x62\x65\x6c\x6fng \x74\x6f \x75\x73'

'All your base are belong to us'

Mogłem pozbyć się zer w Pythonie 3.3, zastępując „ \40\N{SP}, ale niestety Nnie jest to dozwolone.

Edycja : Zainspirowany tą odpowiedzią skróciłem ją dalej, zastępując \x40. Ponadto, ponieważ ja już używać 1, zastępując \156przez ni \x67przez gskrócenie go o kolejne 6 znaków podczas ponoszenia żadnych dodatkowych kary.


1
Zastanawiam się, czy jest to poprawny wpis, ponieważ działa tylko interaktywna powłoka. Jeśli umieścisz to w .pypliku i uruchomisz, nie będzie żadnych wyników.
Daniel Hepper

1
To zależy ... Wierzę, że nie ma ogólnej zasady. Niektóre pytania pozwalają na tryb interaktywny, inne nie.
Bakuriu


1
Działa to również w R
Zach

1
@AaronHall A po mojej edycji sprowadziłem mój do 68!
gerrit

8

Brainfuck, 205 203 - 60 = 145 143 bajtów

++++[->++++<]>[->++++>++>+++++++>++++++>++++++++<<<<<]>+.>>----..<.>>>-------.<<+++.>>----.---.<<<.>>++.-.>+.<++++.<<.>>----.>-.<++++.<<.>>---.+++.<---.>>---.-.<<-----.<.>>>++++++.-----.<<<.>>>++++++.--.

Wersja do odczytu:

++++[->++++<]>[->++++>++>+++++++>++++++>++++++++<<<<<]
64 32 112 96 128

>+.>>----..<.                     All                 65 108 108  32
>>>-------.<<+++.>>----.---.<<<.  your           121 111 117 114  32
>>++.-.>+.<++++.<<.               base            98  97 115 101  32
>>----.>-.<++++.<<.               are                 97 114 101  32
>>---.+++.<---.>>---.-.<<-----.<. belong  98 101 108 111 110 103  32
>>>++++++.-----.<<<.              to                     116 111  32
>>>++++++.--.                     us                     117 115


W końcu trochę się spodziewałem rozwiązania Brainfuck ... Dobra robota!
WallyWest,

7

Befunge 98: 122 - 60 = 62

5f8+*:53-+:' \6-:5+' 91+:*3+::7+\8+:3-:7-:3-:' \3+::3-4+',' -+\4-:' \:4+\6+c+:f3+-:4+3-' '&3*:3+:6-:f+5-:' \d-:' '!+ff+k,@

Oblicza wartości ascii, a następnie je drukuje. Nadal muszę wypróbować inne metody formowania liczb, aby sprawdzić, czy istnieją krótsze sposoby.


Zastanawiałem się, kiedy umieścisz swoje 2 bajty w ... Dobra robota!
WallyWest

7

Python, 195–40 = 155

x,w,y,z,v=4*8,55,56,57,58;exec(("%c"*38)%(y+y,z+z,49+y,w+w,v+v,39-7,34,65,54+54,54+54,x,v+63,48+63,48+69,z+z,x,98,97,59+y,45+y,x,97,z+z,45+y,x,98,45+y,54+54,w+y,w+w,45+v,x,v+v,w+y,x,v+59,z+v,34))

6

Rubin, 121-50 = 71

Trochę brutalnej siły, ale większość uroczych metod jest wykluczona:

$><<[65,c=36*3,c,d=8*4,363/3,f=c+3,c+9,c+6,d,x=98,97,j=c+7,k=3+x,d,97,c+6,k,d,x,k,c,f,j-5,5+x,d,c+8,f,d,c+9,j].pack('C*')

Łamie zasadę nr 1 z powodu wejścia A pack, pozostałe dwa powinny być w porządku.


Mogę zapisać 6 znaków, jeśli zwracamy wynik zamiast go drukować, nie byłem tego jasny po spojrzeniu na inne odpowiedzi.
Paul Prestidge

1
Niezwykle długi, ale już nie „a”: pastebin.com/wnsvcAMh
manatwork

@manatwork Uwielbiam to! Jakoś nigdy o tym nie myślałem, mimo że używam <<w odpowiedzi.
Paul Prestidge

Więc albo użyjesz 154-znakowego rozwiązania, z którego skorzystał @manatwork, i zażądasz 60-punktowego rabatu, który daje ci 94, albo pozostanie przy wersji innej niż Reguła 1 i skorzystasz z 71 ... Wiem, którego użyłbym :)
WallyWest

6

{ba, z} sh, 67 - 40 72 - 60 61 - 40 = 21

$'\x74r' K-~\#-\; _@-~\^-j<<<'Mxx ){%~ 3m#q m~q 3qx{z8 ${ %#'

Cholera, okazuje się, że miałem rtam coś, czego nie zauważyłem, więc bonus 20 nie ma zastosowania!


1
W wersjach zsh i bash, które mam pod ręką, $'\x74\x72'mogą być używane bezpośrednio jako nazwa polecenia, oszczędzając ci 8 znaków dla $(m4<<<). Czy to dla ciebie nie działa?

I po ponownym spojrzeniu na to ... użycie \x72jako zamiennika dla rdostaje 20-punktowy bonus kosztem utraty 30-punktowego bonusu (dla użytkownika 2)

@ WumpusQ.Wumbley oh, masz rację na obu kontach. Nie myślałem o 2używanym tam, pozwól mi sprawdzić, czy mogę znaleźć sposób, aby się go pozbyć i uniknąć utraty bonusów.
FireFly

Cholera jasna, to było genialne! To wygląda na szyfr odwrócony ROT12 ASCII ... (mam rację?) Ładnie zrobione!
WallyWest

Niezła odpowiedź. Ale czy trliczy się jako zasób zewnętrzny?
Digital Trauma

5

C, 75 bajtów - 60 = 15

Dzięki @gastropner za obniżenie wyniku z 50 do 33 i z 19 do 15!

*q,i;f(p){(*(q=p)="\v&&j3%?8j(+9/j+8/j(/&%$-j>%j?9J"[i++]^74)?i=!f(++p):i;}

Pobiera na wejściu adres tablicy char i zapisuje ciąg do tablicy.

Wypróbuj online!

Zadzwoń z:

int main()
{
    char s[128];
    f(s);
    puts(s);
}

Wynik:

Stara wersja (90 bajtów - 40 = 50):

*q,i,j;f(p){for(i=3-3;j="Epp$}s v$fewi$evi$fipsrk$xs$ w"[i++];*q=j!=35-3?j-4:353/3)q=p++;}

1
Mówiąc o tym, korzystając z mocy XOR i rekurencji, możesz osiągnąć 93 - 60 = 33 bajty:*q,i,j;x(p){if(j="\v&&j3%?8j(+9/j+8/j(/&%$-j>%j?9"[i++])*(q=p)=j^74,x(++p);}f(p){i=3-3;x(p);}
gastropner

@gastropner Thanks!
Steadybox

Może pójść z i=i<30następnymi 2 bajtami.
gastropner

@gastropner Nie można użyć 0.
Steadybox

Ach tak, oczywiście!
gastropner

4

JavaScript

(306 znaków - 60 bonus = 246) (206 znaków - 50 bonus = 156)

(123 znaki = 173 znaki - 50 bonusów)

Niby nooby, prawdopodobnie może uzyskać więcej ... Daj mi znać, jeśli coś wypchnąłem, to ostrzega: „Cała twoja baza należy do nas”. Dotyczy to również ASCII.

(c=(''+!'')[4-3],x=([][3]+c)[6])[a='c\x6F'+x+'\x73t'+c+'uct\x6F'+c][a]('a\x6C\x65'+c+'t("A\x6C\x6C y\x6Fu'+c+' ba\x73\x65 a'+c+'\x65 b\x65\x6C\x6F'+x+'\x67 t\x6F u\x73")')()

Jeśli policzysz samą konsolę jako dane wyjściowe, to też się liczy (57 z bonusem):

'A\x6C\x6C y\x6Fu'+(c=(''+!'')[4-3])+' ba\x73\x65 a'+c+'\x65 b\x65\x6C\x6F'+([][3]+c)[6]+'\x67 t\x6F u\x73'

Świetne podejście, choć kilka literowych listów mogło również dać ci premię do reguły 1 ... Dobra robota.
WallyWest

@WallyWest: Dzięki! Problem w JavaScripcie polega na tym, że trudno jest uzyskać literę „A” bez łamania innych zasad lub używania zbyt wielu znaków - zajęłoby to więcej niż 10 znaków.
Qantas 94 Heavy

To prawda, że ​​musisz przeważyć dodatkowe litery w stosunku do bonusów ... Dobra robota!
WallyWest

x=(c.t+c)[6]jest nieco krótszy
Nie, że Charles

również evalmoże być łatwiejszy do zhakowania
Nie żeby Charles

4

Brainfuck, (227 - 60 = 167)

+++++ +++++[>+++>++++++>+++++++++>++++++++++<<<<-]>>+++++.>>++++++++..<<<++.>>>+++++++++++++.----------.++++++.---.<<<.>>++++++++.-.>+.<++++.<<.>>----.>-.<++++.<<.>>---.+++.>------.+++.-.<++.<<.>>>++++++.-----.<<<.>>>++++++.--.

Nie sądzę, że przestrzeń na początku +++++ +++++jest potrzebna? Może to być 226 bajtów.
FinW

3

PHP (35–60 = -25 bajtów)

HOW LOW CAN YOU GET ?[1] [2]

$ xxd yourbase.php 
0000000: 3c3f 3d7e be93 93df 8690 8a8d df9d 9e8c  <?=~............
0000010: 9adf 9e8d 9adf 9d9a 9390 9198 df8b 90df  ................
0000020: 8a8c 3b                                  ..;

[1] Ten program można odkodować za pomocą xxd -r.
[2] Tak, ciężkie rozwiązanie ponownie tutaj. Myślę, że to ... trzeci problem, który rozwiązałem w ten sposób. Być może powinienem przejść do czegoś innego, ale to nie jest tak, że nie jest to świetne w przypadku problemów, które zabraniają ci używania większości postaci.


Nie rozumiem, co próbujesz tutaj zrobić?
WallyWest

@WallyWest On nieco odwrócił łańcuch; w wyniku czego powstało 31 rozszerzonych znaków ASCII, które PHP próbuje interpretować jako stałą nazwę i ponieważ nie znajduje takiej stałej interpretuje jako ciąg. Ten ciąg zostaje z powrotem zanegowany ~.
Tytus

3

Bash, 52-10-30 = 12

Poniższe należy wykonać w (wciąż dość powszechnym) środowisku ISO-8859-1:

$'\x74r' À-þ  @-~<<<'Áìì ùïõò âáóå áòå âåìïîç ôï õó'

To wywołuje tr, co tłumaczy znaki w odpowiedni sposób. Musiałem albo użyć ri złamać zasadę 2, albo użyć cyfry w ucieczce i złamać zasadę 3. Ponieważ 3 daje więcej premii, wybrałem tę pierwszą.


1
Tak zrobił :) Nie można używać „A”, „B”, „T”, „u” lub „y” w każdym przypadku również trzeba minimum dwa warunki
nasady

@cowls: Wygląda na to, że całkowicie przegapiłem ten punkt, dziękuję za wyjaśnienie. Przepisz moją odpowiedź, aby się do tego dostosować.
MvG

@MvG świetna przeróbka ... Dobra robota!
WallyWest

Czy trstanowi zasób zewnętrzny?
Digital Trauma

@DigitalTrauma: Powiedziałbym, że bardziej przypomina standardową bibliotekę, choć z pewnością podlega interpretacji. Ale jest to określone w standardzie POSIX , więc chyba każdy system POSIX musi go mieć, więc jest częścią systemu.
MvG

3

Pure Bash (bez zasobów zewnętrznych), 141 znaków - 50 bonusów = 91

Z = ({k..v})
f = $ '\ x65'
h = $ '\ x6c'
i = $ '\ x6f'
j = $ {Z [7]}
k = $ '\ x73'
m = $ '\ x75'
$ f $ '\ x63'h $ i A $ h $ hy $ i $ m $ j ba $ k $ fa $ j $ fb $ f $ h $ i $ {Z [3]} $' \ x67 't $ iu $ k

Celowe upuszczenie 10-punktowej premii, aby uzyskać lepszy ogólny wynik.

Działa to na każdej bashwersji 3.00.15 lub nowszej, której próbowałem.

Jak to działa

Nie ma tu nauki o rakietach - po prostu bashrozszerzenia takiej czy innej formy:

  • Proste rozwinięcie heksów w celu uzyskania wymaganej postaci. Działa to dla znaków, których reprezentacja szesnastkowa nie zawiera [012]. np. $'\x65'daje name
  • W przypadku innych znaków generujemy tablicę skrótów znaków sekwencyjnych, stosując rozwinięcie nawiasu klamrowego do inicjalizacji tablicy ( Z=({k..v})). Początek rozszerzenia nawiasu jest wybierany ostrożnie, aby indeksy wymaganych przez nas znaków nie zawierały [012]. np. ${Z[7]}daje nam r.
  • bashjest wystarczająco elastyczny, aby umożliwić konstruowanie jego poleceń z zawartości wielu ciągów. Tak $f$'\x63'h$irozszerza się echo.
  • W przypadku znaków, które są wymagane tylko raz, rozwinięcie jest wstawiane w wierszu polecenia echo.
  • W przypadku znaków, które są wymagane dwa lub więcej, bardziej efektywne jest rozwinięcie ich do zmiennych, a następnie odwołanie się do zmiennych.

Poprzednia odpowiedź z pełnym bonusem, ale gorszym wynikiem ogólnym:

Pure Bash (bez zasobów zewnętrznych), 193 znaków - 60 premii = 133

Wiem, że to nie wygra, ale chciałem udowodnić sobie, że jest to możliwe bash, jednocześnie spełniając wszystkie wymagania:

Z = ({3..8} {C..z})
c = $ {Z [36]}
d = $ {Z [37]}
f = $ '\ x65'
h = $ '\ x6c'
i = $ '\ x6f'
j = $ {Z [53]}
k = $ '\ x73'
m = $ '\ x75'
$ f $ '\ x63'h $ i $ {c ^} $ h $ h $' \ x79 '$ i $ m $ j $ d $ c $ k $ f $ c $ j $ f $ d $ f $ h $ i $ {Z [49]} $ '\ x67' $ '\ x74' $ i $ m $ k

To wymaga dość najnowszej wersji bashdla ${c^}ekspansji parametrów. 4.2.25 jest w porządku, ale 3.2.48 nie da rady.


Zdejmuję ci kapelusz ... Właśnie wykonałem tę ... fajną robotę ... Bardzo fajną robotę.
WallyWest

@WallyWest - Właśnie edytowałem w krótszej wersji.
Digital Trauma

3

Postscriptum, 364 - 40 = 324

Oczywiście nie mógłbym tego zrobić loser. :)

/${cvx exec}def
/+{<3C7E4F6F597E3E>$ $}def
/*{<~P&(~>$}def
/-{( )<3C7E4F754E7E3E>$ $ 3 4<~P#;~>$ 4 3<~P)#3FP'-~>$}def
/_{36(      )<~OoP~><3C7E4F754E7E3E>$ $ 4 3<~P,S~>$ 48<~P'?~>$
${96 3<~P#;~>$ + -}<~P">~>$}def
/.{_ 96 3<~P#;~>$ -}def
65 - 777 .
895 353 + _ 774 333 + .
74933 333 + 7 * 3 + 333 + .
9593 4353 + .
689653949 335 + .
735 333 + .
775 333 + _ 5 5 + -

Zaczyna się od kodowania tekstu jako ciągów base-36:

%-=Encoding strings as base-36 numbers=-
%All your base are belong to us
% handle uppercase A separately
%36#ll = %777
%36#your = %1618515
%36#yo = 36#ur = 36#base = 36#are = 36#belong = 36#to = 36#us =
%1248 1107 527198 13946 689654284 1068 1108

A następnie arytmetycznie usuwając jedynki i jedynki oraz jedynki. Ciągi mogą być następnie zregenerowane 36 <string-buf> cvrs, ale daje to duże litery, więc musimy iterować i dodać 0x20, aby były małe.

Operatory cvx execpozwalają nam wykonywać fragmenty łańcuchów tokenów operatora kodowanych binarnie w różnych kodowaniach. Najprostszym jest zakodowanie operatora w trybie szesnastkowym, <92??>ale jest tam 2! Tak więc kodowanie „pierwszego poziomu” to ascii85. Następnie wszelkie ciągi znaków, które nadal zawierały zabronione znaki, przechodziły dodatkowe poziomy hex -> ascii85 -> hex -> ascii85.


2

Brainfuck, 306 - 60 = 246

----[---->+<]>++.[--->+<]>+..[++>---<]>--.--[->++++<]>+.----------.++++++.---.[-->+++++<]>+++.[--->+<]>++.-.--[--->+<]>--.++++[->+++<]>.--[--->+<]>-.[--->+<]>+.--[--->+<]>---.-------------.--[--->+<]>-.[--->+<]>++.+++.+++++++.+++.-.-------.-[--->+<]>--.---[->++++<]>.-----.[--->+<]>-----.---[->++++<]>+.--.

Z pewnością można to jakoś zmniejszyć?
WallyWest,

@WallyWest Nie mam czasu, aby redukować taki program o 5% bez powodu: P nie krępuj się jednak publikować poprawki!
Timtech,

Tutaj nie jest wymagane zobowiązanie :)
WallyWest

@WallyWest Masz rację, skracając go. Przydałoby się kilka istotnych ulepszeń.
Timtech,

2

PHP, 186–10–30 = 146

Musiałem być trochę kreatywny;)

 <?=chr(65).'ll '.chr(88+33).'o'.chr(39*3).'r '.chr(98).chr(97).'s'.chr(68+33).' '.chr(97).chr(38*3).chr(68+33).' '.chr(98).'elo'.chr(77+33).chr(69+34).' '.chr(83+33).'o '.chr(39*3).'s'?>

nadal możesz trochę zagrać w golfa i zachować pomysł na odpowiedź: echo nie wymaga nawiasów (1), możesz użyć <?=zamiast echa (4), możesz zapisać powtarzające się litery w zmiennych ('l', ''). użyj 54*2zamiast54+54
Einacio

1
Naprawiony. Mógłbym tylko pomnożyć na niektórych. Nie mogę tego zrobić, 54*2ponieważ ma 2w sobie coś takiego, więc mogłem to zrobić tylko z tymi, które miały 3 lub więcej, ma czynnik. Jeśli użyję przecinka, nie ma mniej znaków.
ub3rst4r

kilka wskazówek golfowych przy 50 bajtach. Większość z nich (23 + 9 bajtów): Można wymienić pozostałe chr(68+33)i chr(38*3)ze dosłowny ei r.
Tytus

1

Python, 181–40 = 141

[Używam wersji 2.7.2 YMMV - wbudowanej, filenie ma jej w Pythonie 3.X]

f=file.__doc__;c=5-3;l=f[c];s=' ';e=f[3];h=f[6+7];i=f[c*87];j=3**3;f[j*c*5]+l+l+s+f[-57]+h+f[j-7]+f[j-3]+s+f[j-8]+f[6]+i+e+s+f[6]+f[j-3]+e+s+f[j-8]+e+l+h+f[5]+f[j]+s+f[45]+h+s+f[j-7]+i

1

Python (104-30 = 74)

>>> '\x41\x6c\x6c \x79\x6f\x75\x72 \x62\x61\x73\x65 \x61\x72\x65 \x62\x65\x6c\x6f\156\x67 \x74\x6f \x75\x73'
'All your base are belong to us'

I ocena:

>>> len(r"'\x41\x6c\x6c \x79\x6f\x75\x72 \x62\x61\x73\x65 \x61\x72\x65 \x62\x65\x6c\x6f\156\x67 \x74\x6f \x75\x73'")-30
74

Świetnie zrobione, ale tak naprawdę nie
musiałeś

1

Świnka, 150–60 = 90. 40 = 110

S J=" ",Z=36*3,C=37*3,D=38*3,Q=39*3,I=35*3-4 W *65,*Z,*Z,J,*484/4,*C,*Q,*D,J,*98,*97,*C+4,*I,J,*97,*D,*I,J,*98,*I,*Z,*C,*D-4,*Z-5,J,*C+5,*C,J,*Q,*C+4

Nie jestem pewien, czy można by to zrobić krócej (ogólnie), nie otrzymując jednego z bonusów kodowych - moim celem było trochę mniej w przypadku krótkości i nieco więcej w przypadku -60 ... Podobało mi się wyzwanie nieużywania dowolny z ograniczonych znaków.

I ... poprawiłem to - przegapiłem początkowe polecenie „S”. : - /

Tak czy inaczej, oto wersja „bez reguł” - rozszerzanie zmiennych.

W *65,*36*3,*36*3," ",*484/4,*37*3,*39*3,*38*3," ",*98,*97,*37*3+4,*35*3-4," ",*97,*38*3,*35*3-4," ",*98,*35*3-4,*36*3,*37*3,*38*3-4,*36*3-5," ",*37*3+5,*37*3," ",*39*3,*37*3+4

A to daje wynik 177-60 = 117. Więc złamanie reguły środkowej wciąż dawało mi niższy ogólny wynik.


Ciekawa odpowiedź ... Czy istnieje emulator online, do którego mogę uzyskać dostęp do wykonania tego kodu?
WallyWest,

1
Nie wiem, ale istnieją wersje dla Mumps, które działają na prawie każdej platformie - są nawet wersje, które będą działały na Raspberry Pi, jeśli chcesz bardzo małą maszynę Mumps ... :-)
zmerch

1

Perl 5, 99-50 = 49

Podprogram, który zwraca wymagany ciąg:

{A.($c=h|d)."$c y".($f=f|k).u.($k=p|b)." ba".($j=c|p).($d=d|a)." a$k$d b$d$c$f".(jf|fc)." t$f u$j"}

Zobacz wydrukowane w ten sposób:

perl -e'print sub{...}->().$/'

1

BF-RLE , 146–30 = 116

+5[>+5<-]>+.<+4[>+3<-]>+..>>+3[<+2>-]<++.<+A.-7.+3.-0.>.<<+1[>-1<-]>.-.<+0[>+3<-]>.-B.>.<-1.<+1[>+1<-]>+.-A.>.<-0.+0.+4.+0.-.-4.>.<+A.-2.>.<+3.--.

Można to znacznie skrócić
Timtech
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.