tło
Obecnie uczęszczam na zajęcia AP Comp Sci A: Java i chcę zacząć od gry w golfa. Mam wyzwanie z kursu i chciałbym zobaczyć, w ilu bajtach społeczność może wykonać to wyzwanie.
Szczegóły wyzwania:
Biorąc pod uwagę dwa ciągi wejściowe, ciąg główny i ciąg przestawny, wykonaj następujące czynności:
Jeżeli łańcuch przestawny jest dokładnie jeden raz jako podciąg łańcucha głównego, część głównego łańcucha, która pojawia się przed łańcuchem obrotowym, powinna zostać zamieniona na część, która następuje po nim, zachowując jednocześnie kolejność wymienionych podciągów .
Na przykład:
Jeśli łańcuch przestawny jest pusty lub łańcuch główny nie zostanie znaleziony w ciągu głównym, program nie musi mieć zdefiniowanego zachowania.
Jeśli istnieje więcej niż jedna instancja ciągu przestawnego, podział powinien nastąpić przy pierwszej i tylko pierwszej instancji przestawnej.
Przykłady: Biorąc pod uwagę ciąg główny OneTwoThreeTwoOne
i ciąg przestawny Two
, wynikiem powinno być ThreeTwoOneTwoOne
.
Biorąc pod uwagę główny ciąg 1Two2Two3Two4
i oś przestawną Two
, wynikiem powinno być 2Two3Two4Two1
.
Biorąc pod uwagę ciąg główny OneTwoThree
i ciąg przestawny „Dwa”, wynikiem powinno być ThreeTwoOne
. Biorąc pod uwagę główny ciąg the rabbit is faster than the turtle
i ciąg przestawny
is faster than
(zwróć uwagę na pojedyncze spacje końcowe i poprzedzające), wynikiem powinno być the turtle is faster than the rabbit
.
Biorąc pod uwagę główny ciąg 1-2-3-4-5-6
i oś przestawną -
, wynikiem powinno być 2-3-4-5-6-1
.
Posłowie:
To jest moje pierwsze pytanie dotyczące golfa kodowego, więc jeśli masz sugestie lub konstruktywną krytykę, możesz to powiedzieć.
Dodatkowo mój kod dla tego projektu (napisany w Javie, ponieważ kurs koncentruje się na tym) znajduje się poniżej. Jeśli masz jakieś wskazówki, chciałbym je zobaczyć. Obecnie ma 363 bajty, ale założę się, że możecie wymyślić znacznie lepsze i mniejsze rozwiązania.
import java.util.Scanner;interface Main{static<T>void D(T f){System.out.println(f);}static void main(String[]A){Scanner s=new Scanner(System.in);D("Enter the first String:");String a=s.nextLine();D("Enter the pivot String:");String p=s.nextLine();if(p.isEmpty()|!a.contains(p)){D("Error: Pivot String not found.");return;}String w[]=a.split(p,2);D(w[1]+p+w[0]);}}
Uwaga: Tekst dla danych wejściowych i przypadku, gdy nie można znaleźć ciągu przestawnego, jest obowiązkowy dla pierwotnego przypisania, ale nie dla tego wyzwania.
pivot='-'
imain='1-2-3-4-5-6'
? Większość zgłoszeń wychodzi2-3-4-5-6-1
na to, ale jak rozumiem, powinno to być wyzwanie2-1-3-4-5-6
.2-3-4-5-6-1
.Odpowiedzi:
Mathematica, 42 bajty
Wypróbuj online!
źródło
Galaretka , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
œṣ
„dzieli x wokół podlist równych y ”,ṙ1
obraca tablicę o jedno miejsce w lewo ij⁴
łączy się z drugim wejściem.Python 2 , 37
39bajtówGdzie
a
jest ciąg główny ib
ciąg przestawny.Wypróbuj online!
źródło
split(b)
abysplit(b,1)
określić, że chcesz podzielić tylko za pierwszym razem.split
zaakceptowałem więcej argumentów, dzięki!Wolfram Language (Mathematica) , 34 bajty
Wypróbuj online!
Nienazwana funkcja curry, którą należy wywołać najpierw z osią przestawną, a drugą z ciągiem głównym. Na przykład, jeśli przypisałeś funkcję do nazwy
f
:źródło
Ohm v2 , 4 bajty
Wypróbuj online!
źródło
Perl 5 , 20 + 2 (
-pl
) = 22 bajtówWypróbuj online!
Bierze ciąg przestawny w pierwszym wierszu, a następnie pełny ciąg w drugim wierszu.
źródło
/
s wokół$_
$_=~<>;$_="$'$&$
„” ma 20 bajtów i odczytuje argumenty w odpowiedniej kolejnościPython 2 ,
5344 bajtydzięki ThePlasmaRailgun za niektóre bajty
Wypróbuj online!
źródło
print k[1]+p+k[0]
. To powinno mieć zamierzone zachowanie.k,j=m.split(p,1);print j,p,k
dla 38 bajtów.Python 2 , 37 bajtów
Wypróbuj online!
źródło
C # (kompilator Visual C #) , 56 bajtów
Wypróbuj online!
źródło
Alice , 18 bajtów
Wypróbuj online!
Wyjaśnienie
Jest to po prostu framework dla liniowego kodu trybu Ordinal (przetwarzanie łańcuchów). Po rozwinięciu zygzakowatego przepływu sterowania otrzymujemy:
źródło
SOGL V0.12 ,
95 bajtówWypróbuj tutaj!
Wyjaśnienie:
źródło
Siatkówka ,
2423 bajtyczołgi do Martina Endera za -1 bajt
Wypróbuj online!
źródło
Python 2 , 48 bajtów
Wypróbuj online!
źródło
Pyth , 8 bajtów
Wypróbuj tutaj!
Wyjaśnienie
źródło
Węgiel drzewny , 13 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
R ,
635857 bajtówWypróbuj online!
M
jest głównym ciągiem,P
jest osią obrotu.Odpowiedź Retina z serwisu ovs wskazała, że mogę naprawić moją wcześniejszą próbę zastosowania wyrażenia regularnego
dodając
?
do pierwszej grupy przechwytywania.źródło
Java 8, 47 bajtów
Wypróbuj online
źródło
JavaScript (ES6),
4140 bajtówPrzypadki testowe
Pokaż fragment kodu
źródło
J , 14 bajtów
Jak to działa:
Lewy argument jest osią obrotu, prawy - ciąg znaków, który ma zostać odwrócony
Wypróbuj online!
źródło
C,
106100 bajtówWypróbuj online!
źródło
SNOBOL4 (CSNOBOL4) , 53 bajty
Wypróbuj online!
Pobiera dane wejściowe jako Pivot, a następnie Main, oddzielone znakiem nowej linii.
Jest to w zasadzie odpowiednik snobol z moim R odpowiedź .
źródło
Perl 6 , 31 bajtów
Sprawdź to
źródło
PHP, 62 bajty
wymaga PHP 7.1; może się nie powieść, jeśli pivot zawiera specjalne znaki regularne (
\+*?[^]$(){}=!<>|:-
).bez zmian, jeśli Pivot jest pusty, puste wyjście, jeśli Pivot nie jest wprowadzony.
Uruchom z
-n
.wersja bezpieczna, 77 bajtów:
bez zmian, jeśli Pivot jest pusty, puste wyjście, jeśli Pivot nie jest wprowadzony.
Uruchom z
-n
.wersja bez wyrażenia regularnego, 71 bajtów:
wyświetla ostrzeżenia, jeśli element przestawny jest pusty; bez zmian, jeśli Pivot nie jest wprowadzany.
Uruchom z
-nr
.Wypróbuj je online .
źródło
Czerwony , 63 bajty
Wypróbuj online!
źródło
Szybki , 131 bajtów
Wyjaśnienie (bez golfa)
źródło
C (gcc) , 76 bajtów
Wypróbuj online!
źródło
C ++ 11, 64 bajty
Lambda, która przechwytuje ciągi s, p i a, jako odniesienie (wejście-wyjście).
Kod testowy
źródło
Czysty , 83 bajty
A
String
w Clean to normalnie{#Char}
- unboxed (#
)Char
array ({}
). Ta funkcja przyjmuje[Char]
zamiastString
, czyli drugą, poprawną wersjęString
.Pełna sygnatura funkcji to
f :: [.t] .t -> [.t] | [.t <= Char]
.Wypróbuj online!
źródło
Japt ,
87 bajtówWypróbuj tutaj
źródło