Фон
В настоящее время я учусь в AP Comp Sci A: Java, и я хочу начать с некоторыми из моих друзей заниматься гольфом. У меня есть вызов от курса, и я хотел бы видеть, сколько байтов сообщество может выполнить этот вызов.
Детали вызова:
Учитывая две входные строки, основную строку и строку сводки, сделайте следующее:
Если строка поворота в качестве подстроки основной строки указывается ровно один раз, часть основной строки, которая находится перед строкой поворота, должна быть заменена на часть, которая следует после, при сохранении порядка в указанных подстроках, подлежащего обмену .
Например:
Если строка сводки пуста или строка сводки не найдена в основной строке, программе не требуется определенное поведение.
Если имеется более одного экземпляра строки сводки, разделение должно происходить в первом и только в первом экземпляре сводки.
Примеры: Учитывая основную строку OneTwoThreeTwoOne
и строку разворота Two
, вывод должен быть ThreeTwoOneTwoOne
.
Учитывая основную строку 1Two2Two3Two4
и сводку Two
, вывод должен быть 2Two3Two4Two1
.
Учитывая основную строку OneTwoThree
и сводную строку «Два», вывод должен быть ThreeTwoOne
. Учитывая основную строку the rabbit is faster than the turtle
и строку разворота
is faster than
(обратите внимание на один пробел после и после), вывод должен быть the turtle is faster than the rabbit
.
Учитывая основную строку 1-2-3-4-5-6
и стержень -
, вывод должен быть 2-3-4-5-6-1
.
Послесловие:
Это мой первый вопрос о код-гольфе, так что если у вас есть предложения или конструктивная критика, не стесняйтесь так говорить.
Кроме того, мой код для этого проекта (написанный на Java, потому что курс посвящен этому) можно найти ниже. Если у вас есть какие-либо советы, я бы хотел их увидеть. В настоящее время его размер составляет 363 байта, но я уверен, что вы, ребята, можете придумать гораздо лучшие и более мелкие решения.
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]);}}
Примечание. Текст для входных данных и для случая, когда строка сводки не найдена, является обязательным для исходного присвоения, но не для этой задачи.
2-3-4-5-6-1
.
pivot='-'
иmain='1-2-3-4-5-6'
?2-3-4-5-6-1
Для этого выводится большинство заявок , но, как я понимаю, задача должна быть2-1-3-4-5-6
.