Czy rozpoznajesz logo PPCG? wygląda to tak, kiedy tworzysz sztukę ascii.
+---+
|PCG|
+---+
v
Teraz, w tym Code Golf, stworzysz kod, który tworzy loga dla innych stron, podobne do logo PPCG.
Co powinieneś zrobić
„Skrócony” ciąg będzie ciągiem, w którym wszystkie duże litery i cyfry będą ciągiem wejściowym. (Który byłby, PPCG
gdy ciągiem wejściowym jest Programming Puzzles & Code Golf
)
Pudełko" (
+---+
| |
+---+
v
) powinien idealnie pasować do Skróconego sznurka. (Nie większy ani mniejszy)
Również v
część powinna być dokładnie 1 w dół i 1 w lewo w prawo w dół +
.
Następnie wyślij pudełko zawierające skrócony ciąg.
Przykład
Stack Overflow
:
+--+
|SO|
+--+
v
Area 51
:
+---+
|A51|
+---+
v
Zasady
Możesz założyć, że wejście zawiera co najmniej jedną cyfrę lub wielką literę.
Obowiązują standardowe zasady gry w golfa .
^
nie dodaje wiele w porównaniu do drugiego wyzwania, które podłączyłem, ale nie rzucę na to młotem dupe, ale pozwól gminom zdecydować, czy uważają to za dupe, czy nie.99 Bottles Of Beer
, byłoby99BOB
.Odpowiedzi:
Vim, 42 uderzenia
Zamień
<DOWN>
z ↓,<LEFT>
z ←,<ESC>
z esc, a<C-V>
z CTRL+ V.Oto animacja działania tego skryptu (stara wersja, która używa
V
zamiast av
):Objaśnienie skryptu:
źródło
i+↓←|␛␖ky$p
zA+↓|␛␖ky0P
zapisać bajt.I|<END>|␛
V 34 bajtów
Pamiętaj, że działało to w starszej wersji, ale nie działa w bieżącej wersji po wypróbowaniu online. Zmieniłam
Ä
naYP
który jest funkcjonalnie równoważny.Wypróbuj online!
Wyjaśnienie:
Usuń wszystko oprócz cyfr i wielkich liter.
Teraz bufor wygląda następująco:
Nasz kursor znajduje się w pierwszej kolumnie ostatniego wiersza.
Wersja niekonkurencyjna: (31 bajtów)
źródło
Programming Puzzles & Code Golf
generują niepoprawny ciąg znakówPP&CG
w danych wyjściowych.&
Powinny zostać usunięte16-bitowy kod maszynowy x86, 72 bajty
W hex:
Parametry:
SI
= ciąg wejściowy,DI
- bufor wyjściowy.Zwraca ciąg zakończony znakiem NULL z wierszami oddzielonymi znakiem nowej linii. Używa ciągu wejściowego jako bufora tymczasowego.
źródło
3c 41 cmp al,a'
nie powinno być3c 41 cmp al,'a'
?Siatkówka , 43 bajty
Wypróbuj online!
To idealne wyzwanie, aby zademonstrować Retinę, język golfowy Martina Endera.
To rozwiązanie jest podzielone na dwa etapy (tak zwane etapy), przy czym oba etapy są etapem zastępczym.
Pierwszy etap:
Odpowiada to pasującym podciągom
[^A-Z\d]
, czyli znakom, które nie są dużymi literami i nie są cyframi, a następnie zastępują je niczym, co oznacza ich usunięcie.Drugi etap:
.+
Dopasowuje cały efekt, a następnie zastępuje go z drugiej linii.W drugiej linii:
$&
odnosi się do całego meczu$.&
odnosi się do długości całego meczu$*
oznacza weź poprzednią liczbę całkowitą, powtórz kolejny znak tyle razy. Tutaj$.&$*-
oznacza się powtórzyć-
jednak długo trwa mecz.¶
odnosi się do nowej linii.źródło
T`dLp`dL_
niestety ta sama długość.C #,
183 177165 bajtówmnożenie znaków jest straszne w C #. sugestie mile widziane
wielkie dzięki dla aloisdg za -18 bajtów
źródło
| |
z|
return$"+{x}+\n|{s}|\n+{x}+\n{new string(' ',m+1)}v";}
string.Join("",
zstring.Concat(
return
Excel VBA,
375359358 bajtów:Działa, rezygnuję z próby skrócenia ...
Edycja: Przełączono na instrukcję case z instrukcji if, -16 bajtów
Edycja2: Pozbyłem się u i zastąpiłem Len (b), -1 bajt
źródło
Lua,
14599 bajtówNiewiele do powiedzenia, manipulowanie ciągami jest zawsze uciążliwe w lua :). Pobiera argument wiersza polecenia i wyprowadza go przez STDOUT
Dzięki @LeakyNun za uratowanie mnie 45 bajtów!
100 bajtów zaproponowanych przez @LeakyNun
STARY 145 bajtów
Nie golfił
źródło
n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"
ma 100 bajtów%u
uzyskujemy więcej bajtów. W każdym razie dzięki :) (zaktualizuje nie golfowego później)2sable ,
3634333231 bajtówPrezentacja 2sable :). Chociaż ma to wiele wspólnego z 05AB1E, ten w rzeczywistości automatycznie dołącza do stosu, a nie wyprowadza jego wierzchu. Kod:
Wykorzystuje kodowanie CP-1252 .
źródło
JavaScript (ES6), 99 bajtów
źródło
Haskell, 107 bajtów
Ta odpowiedź jest mocno oparta na odpowiedź przez Zylviij i uwagami Nimi . Dodałbym więcej komentarzy do tej odpowiedzi, ale niestety nie mam wystarczającej liczby przedstawicieli.
Zastosowane dodatkowe sztuczki:
intersect
przez jego implementację, aby można było usunąć import. (Uwaga dodatkowa: implementacja jest prawie dosłownie taka sama jak w bibliotece, nie mogłem znaleźć krótszej wersji)where
klauzuli, aby funkcje mogły korzystać zn
parametru wewnętrznie.(#)
był na tyle krótki, że można go było wstawić.źródło
Python 3.5,
11493112 bajtów:Pełny program. Zasadniczo używa wyrażenia regularnego, aby dopasować wszystkie wystąpienia wielkich liter i cyfr, a następnie tworzy pole o dokładnym rozmiarze na podstawie długości listy dopasowań, a na koniec umieszcza połączoną listę dopasowań „wewnątrz”.
Wypróbuj online! (Ideone)
źródło
Python 3,
121124 bajtówNaprawiono głupi błąd
nie importuje bibliotek jak inne odpowiedzi w języku Python.
źródło
Java 8, 149 bajtów
Wypróbuj online.
Wyjaśnienie:
źródło
Pyke, 39 bajtów
Wypróbuj tutaj!
12 bajtów tworzenia mini-ciągu, 20 bajtów formatowania. Radość!
źródło
Pyth,
3837 bajtówWypróbuj online.
Zwróć uwagę na nowy wiersz na początku.
źródło
Python 2, 113 bajtów
źródło
47<x<58|64<x<91
:)char
typu - wszystkie znaki w łańcuchach Pythona same są łańcuchami i nie można ich bezpośrednio porównywać z liczbami całkowitymi. Musiałoby tak być47<ord(x)<58or 64<ord(x)<91
.[x for x in n if x.isupper()^x.isdigit()]
jest o jeden bajt krótszy niżfilter(lambda x:x.isupper()^x.isdigit(),n)
x.isupper()^x.isdigit()
->x.isupper()|x.isdigit()
Jolf, 35 bajtów
Potrzebuję krótszego sposobu, aby usunąć wszystkie oprócz wielkich liter i cyfr ...
źródło
C
171163Funkcja
f()
modyfikuje dane wejściowe i drukuje wynik.Program testowy
Wymaga jednego parametru, ciągu znaków do użycia w favicon:
źródło
Haskell, 161
Stosowanie
źródło
replicate
,length
if
wyłącznie w tej kombinacji, dzięki czemu można połączyć je w jedną funkcję:r=replicate.length.f
a jak nazwaćr n '-'
. Możesz zapisać jeszcze więcej bajtów za pomocą operatora infix:(#)=replicate.length.f
in#'-'
/n#' '
. Dodatkoworeplicate.length
jest>>
(z łańcuchem singletonowym zamiast znaku), więc jest:(#)=(>>).f
in#"-"
/n#" "
, oba bez( )
niego.( )
wokółt n
if n
."|"++
jest'|':
. W sumie:o n=t n++'|':f n++"|\n"++t n++n#" "++"V"
.Bash,
9974 bajtówUsage: Run the above command, type the site name, press enter and then Ctrl + D (send 'end of file').
źródło
CJam, 41
Try it online
źródło
R, 108 bytes
Explanation
Going from the inside out (because who doesn't love assigning global variables from inside a regex), assuming
s
is our input string:y<-gsub("[^A-Z0-9]","",s)
keeps capitals and numbers, assigns the resulting value to y.gsub(".","-",y<-...)
replaces all characters with hyphens in the above.x<-gsub("(.*)","+\\1+\n",gsub(...))
chucks a+
on either end of the row of hyphens, and a newline, and we store that as x.The rest is pretty straightforward, output in the appropriate order, and use the fact that the number of spaces before the
v
will be the same as the length of y.źródło
Brachylog, 61 bytes
Linked to the repository at Jul 7 to ensure backward compatibility.
Non-competing, 53 bytes
Try it online!
źródło
APL,
5249 bytes(down to 49 thanks to the comment).
źródło
{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}
(You never parenthesize one of the arguents in a reversed argument function when golfing. It always can be in normal order to save a byte.)Perl, 57 bytes
56 bytes code + 1 for
-p
.I originally tried to make this only using regexes, but it was much larger than I'd hoped, so I've used some string repetition instead.
Try it online!
źródło
MATL, 34 bytes
Try it online!
źródło
JavaScript (ES6), 119 bytes
źródło
J, 52 bytes
Try it online!
źródło
Ruby, 81 bytes (78 +
-p
flag)źródło
Common Lisp (Lispworks), 159 bytes bytes
ungolfed:
Usage:
źródło