Фон
Зараз я перебуваю в класі 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.