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 OneTwoThreeTwoOnei ciąg przestawny Two, wynikiem powinno być ThreeTwoOneTwoOne.
Biorąc pod uwagę główny ciąg 1Two2Two3Two4i oś przestawną Two, wynikiem powinno być 2Two3Two4Two1.
Biorąc pod uwagę ciąg główny OneTwoThreei ciąg przestawny „Dwa”, wynikiem powinno być ThreeTwoOne. Biorąc pod uwagę główny ciąg the rabbit is faster than the turtlei 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-6i 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.
2-3-4-5-6-1.
pivot='-'imain='1-2-3-4-5-6'? Większość zgłoszeń wychodzi2-3-4-5-6-1na to, ale jak rozumiem, powinno to być wyzwanie2-1-3-4-5-6.