Wkład:
- Łańcuch (fragment fali) o długości
>= 2
. - Dodatnia liczba całkowita n
>= 1
.
Wydajność:
Wyprowadzamy falę jednoliniową. Robimy to, powtarzając n wejściowy ciąg znaków .
Zasady konkursu:
- Jeśli pierwszy i ostatni znak ciągu wejściowego jest zgodny, wypisujemy go tylko raz w całości wyniku (tj.
^_^
O długości 2 staje się,^_^_^
a nie^_^^_^
). - Łańcuch wejściowy nie będzie zawierał żadnych białych znaków / tabulatorów / nowych linii / etc.
- Jeśli twój język nie obsługuje znaków spoza ASCII, to w porządku. Tak długo, jak jest to zgodne z wyzwaniem z wejściem falowym tylko ASCII.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Odpowiedzi dotyczą standardowe zasady , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
_.~"( length 12
_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(_.~"(
'°º¤o,¸¸,o¤º°' length 3
'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'°º¤o,¸¸,o¤º°'
-__ length 1
-__
-__ length 8
-__-__-__-__-__-__-__-__
-__- length 8
-__-__-__-__-__-__-__-__-
¯`·.¸¸.·´¯ length 24
¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯
** length 6
*******
String & length of your own choice (be creative!)
>= 1
” wydaje mi się trochę pleonastyczna ... :)Odpowiedzi:
Pyke,
151410 bajtówWypróbuj tutaj!
źródło
Python 3, 32 bajty
Łączy
n
kopie ciągu, usuwając pierwszy znak ze wszystkich kopii, ale pierwszy, jeśli pierwszy znak pasuje do ostatniego.źródło
s[0]
is[-1]
wydaje się, że odnosi się do pierwszego i ostatniego bajtu, a nie do pierwszego i ostatniego znaku. Edycja: ach, czekaj, to jest Python 2 vs. Python 3. Działa poprawnie w Python 3.05AB1E , 13 bajtów
Wykorzystuje kodowanie CP-1252 .
Wypróbuj online!
Wyjaśnienie
-___-
i3
używane na przykład jako dane wejściowe.źródło
JavaScript (ES6), 47 bajtów
źródło
s=>n=>...
zamiast(s,n)=>
Perl, 29 bajtów
Kod 28 bajtów + 1 dla
-p
.Dzięki @Dada za pomoc w goleniu kilku bajtów!
Stosowanie
Przykład online.
źródło
<>
zamiast,$'
ponieważ pozwala to się pozbyć-0
. A potem możesz użyćs///e
zamiast//;$_=
wygrać jeszcze jeden bajt :-)$
dopasować koniec, wciąż oszczędza mi bajtów, ponieważ nieużywanie'
oznacza, że mogę go upuścić, zapisując go w pliku, aby zapisać, dodając 3-p
i upuszczając go z powrotem do 1!$
nowej linii zamiast poprzedniej linii. (Przepraszam, że mój komentarz nie był zbyt szczegółowy, spieszyłem się ...)<>
ciągu zastępującego. Ale jeślin
jest oddzielony spacją zamiast nowej linii, liczbę znaków można nieco zmniejszyć:s/(.+?) (\d+)/$1x$2/e
Perl, 23 bajty
Obejmuje +1 dla
-p
Podaj ciąg wejściowy, a następnie liczbę w osobnych wierszach na STDIN
wave.pl
:Jeśli pierwszy znak w słowie nie jest znakiem specjalnym wyrażenia regularnego, ta 22 bajtowa wersja również działa:
źródło
/g
modyfikatora, kiedy go wkleiłeś ;-)MATL,
191714 bajtówDziała to dla ASCII na interpretera online oraz zarówno dla Unicode, jak i ASCII, gdy jest uruchamiany przy użyciu MATLAB.
Wypróbuj online!
Wyjaśnienie
źródło
Siatkówka , 29 bajtów
Linie 2 i 5 mają spację końcową.
Wypróbuj online! (Pierwszy wiersz włącza pakiet testowy oddzielony od linii).
źródło
Partia, 117 bajtów
Pobiera liczbę powtórzeń jako parametr wiersza polecenia i odczytuje ciąg z STDIN.
źródło
Pyth, 13 bajtów
Zestaw testowy!
Wyjaśnienie do naśladowania.
źródło
Gema, 41 znaków
Przykładowy przebieg:
źródło
PowerShell v2 +, 48 bajtów
Wysyła jeden raz cały ciąg, a następnie n-1 kopii ciągu lub podłańcucha, w zależności od tego, czy pierwszy i ostatni znak są zgodne.
Do
.Substring()
wyjścia z indeksu metoda dostarczana do końca łańcucha, więc jeśli$s[0]-eq$s[-1]
FALSE (0), otrzymujemy cały ciąg. Jeśli to stwierdzenie jest prawdziwe (1), otrzymujemy podciąg zaczynający się od drugiego znaku.źródło
VBA 119 bajtów
Nowość w tej grze i vba wygrywa z najwyższymi bajtami: P
PS: Nie mogę uwierzyć, że VBA stoi blisko JAVA HAHA
Wyjaśnienie:
źródło
CJam,
1615 bajtówWypróbuj online
Wyjaśnienie:
źródło
K, 12 bajtów
Dzięki
źródło
{,/y#,$[(*x)~*|x;-1;0]_x}
dla 25 bajtów obsługuje pierwsze / ostatnie dopasowanie. Jeśli jesteś szczęśliwy, że{,/y#,x}
PHP, 72 bajty
w PHP 7.1 można go zmniejszyć do 65 bajtów
źródło
Pip , 18 bajtów
Rozwiązanie Regex, wykorzystujące zasadę „brak spacji na wejściu”. Pobiera ciąg ze standardowego wejścia i liczby jako argument wiersza polecenia.
Wypróbuj online!
Wyjaśnienie:
W ten sposób
a b
zmienia się wab
,a a
zmienia sięa
, a spacja na końcu łańcucha jest usuwana. Następnie wynik jest drukowany automatycznie.źródło
Haskell, 59 bajtów
Wersja bez golfa:
źródło
Java 10,
12311110910710210079 bajtówWypróbuj online.
Alternatywnie z taką samą liczbą bajtów ( 79 bajtów ):
Wypróbuj online.
Spróbuję oczywiście odpowiedzieć na własne pytanie. ;)
-5 bajtów dzięki @ dpa97 .
-21 bajtów konwertujących z Java 7 na 10.
Wyjaśnienie:
źródło
.split
.s.substring(1)
jest o dwa bajty krótszy. ;)JavaScript ES6, 49 znaków
Test:
źródło
QBIC , 65 bajtów
Chyba powinienem dodać LEFT $ i RIGHT $ do QBIC ...
Wyjaśnienie:
źródło
C #, 79 bajtów
Trochę absurdalnej metody powtarzania łańcucha. Utwórz nowy ciąg o żądanej długości powtarzania, a następnie zamień każdy znak na ciąg, który chcesz powtórzyć. Poza tym wygląda na prawie taką samą strategię jak wiele innych.
źródło
x
? Być może lepiej byłoby zmienić to na spację, ponieważ „ Łańcuch wejściowy nie będzie zawierał białych znaków / tabów / nowych linii / itp. ”.x
.xx...x
Najpierw tworzy ciąg, a następnie zamienia każdy z nichx
bez ponownej oceny ciągu od początku z tym, co należy wymienić.SpecBAS - 68 bajtów
Używa wbudowanego,
IF
aby sprawdzić, czy pierwszy i ostatni znak są takie same. Jeśli nie, wydrukuj ciąg znakówn
kilka razy. W przeciwnym razie podziel łańcuch na długość-1, powtórz go i umieść ostatni znak na końcu.Akceptuje tylko znaki ASCII (lub znaki wbudowane w SpecBAS IDE)
źródło
APL, 19 bajtów
Stosowanie:
Wyjaśnienie:
⊃⍺=⊃⌽⍺
: sprawdź, czy pierwszy znak pasuje do ostatniego znaku⍺↓⍨
: w takim przypadku upuść pierwszy znak⊂
: dołącz wynik⍵⍴
: powtórz to⍵
razy1↓
: upuść pierwszy (jest krótszy niż(⍵-1)⍴
)∊
: zdobądź wszystkie proste elementy (cofnij boks)⍺,
: dodaj jedną instancję całego łańcucha z przoduźródło
Postscript, 98 bajtów
... ale możesz potrzebować „flush” przypiętego do tego, aby twój interpreter PS opróżnił bufor komunikacyjny, kolejne sześć bajtów :(
źródło
Common Lisp (LispWorks), 176 bajtów
Stosowanie:
Wyjaśnienie:
Ungolf:
źródło
Vim, 17 bajtów
Najłatwiejszym sposobem na to jest użycie wyrażenia regularnego, które może stwierdzić, czy pierwszy i ostatni znak są zgodne. Ale długie wyrażenia regularne są długie. Nie chcemy tego.
Fala do powtórzenia znajduje się w buforze. Zakładam, że liczba do powtórzenia znajduje się w rejestrze
"a
(wpiszqaNq
N jako liczbę, aby ją ustawić). Chodzi o to:Następnie razy
P
usunięty tekst@a
.lDg*
: Ten manewr tworzy wyrażenie regularne pasujące do dowolnego pierwszego znaku, niezależnie od tego, czy należy go uciec, czy nie, czy to słowo, czy nie. (*
wystarczyłoby, aby poprawnie uniknąć wyrażenia regularnego, ale dodałby niechciane\<\>
śmieci, jeśli byłby to znak słowny_
.)p^
: Ostatni krok był brudny. Oczyść do pierwotnej pozycji, na początku linii.v$
W trybie wizualnym,$
domyślnie do ruchów po zakończeniu linii.?<C-P>$<CR>hd
: Jeśli poprzedni regex istnieje na końcu linii, to wyszukiwanie zostanie do niego przeniesione; w przeciwnym razie pozostań poza końcem linii. Stamtąd przejdź w lewo, a my wykonamy (nużące) usunięcie, którego potrzebujemy.@aP
: Uruchom powtarzanie liczb jako makro, które ma być użyte jako argumentP
.źródło
Rubinowy, 38 bajtów
Myślę, że to dość oczywiste. Nadal zastanawiam się, czy istnieje bardziej zwięzły sposób na przedstawienie
s[0..-2]
bloku, ale jeszcze go nie znalazłem.źródło
Java (117 bajtów)
źródło
b>0;b--
w golfab-->0;
. Ponadto, dlaczegob+
tam jestc+=b+a.substring
? Mimo to jest to świetna pierwsza odpowiedź, jeśli wymyślisz ją niezależnie. Życzymy miłego pobytu tutaj na PPCG! :) Warto również przeczytać Porady dotyczące gry w golfa w Javie .