Фон
В настоящее время я учусь в 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]);}}
Примечание. Текст для входных данных и для случая, когда строка сводки не найдена, является обязательным для исходного присвоения, но не для этой задачи.
pivot='-'
иmain='1-2-3-4-5-6'
?2-3-4-5-6-1
Для этого выводится большинство заявок , но, как я понимаю, задача должна быть2-1-3-4-5-6
.2-3-4-5-6-1
.Ответы:
Mathematica, 42 байта
Попробуйте онлайн!
источник
Желе , 6 байт
Попробуйте онлайн!
объяснение
источник
œṣ
«разделяет x вокруг подсписков, равных y »,ṙ1
вращает массив на одно место влево иj⁴
соединяется со вторым входом.Python 2 , 37
39байтгде
a
находится основная строка иb
является основной строкой.Попробуйте онлайн!
источник
split(b)
чтобыsplit(b,1)
указать, что вы хотите разделить только по первому вхождению.split
принял больше аргументов, спасибо!Wolfram Language (Mathematica) , 34 байта
Попробуйте онлайн!
Неименованная карри-функция, которая должна вызываться с первой точкой поворота и второй основной строкой. Например, если вы присвоили функции имя
f
:источник
Ом v2 , 4 байта
Попробуйте онлайн!
источник
Perl 5 , 20 + 2 (
-pl
) = 22 байтаПопробуйте онлайн!
Принимает строку поворота в первой строке, затем полную строку во второй.
источник
/
окружение$_
можно удалить$_=~<>;$_="$'$&$
"составляет 20 байтов и читает аргументы в правильном порядке"Python 2 ,
5344 байтаспасибо ThePlasmaRailgun за несколько байтов
Попробуйте онлайн!
источник
print k[1]+p+k[0]
. Это должно было иметь предполагаемое поведение.k,j=m.split(p,1);print j,p,k
по 38 байт.Python 2 , 37 байт
Попробуйте онлайн!
источник
C # (компилятор Visual C #) , 56 байт
Попробуйте онлайн!
источник
Алиса , 18 байт
Попробуйте онлайн!
объяснение
Это просто структура для линейного кода в режиме Ordinal (обработка строк). Развернув зигзагообразный поток управления, мы получим:
источник
SOGL V0.12 ,
95 байтовПопробуй здесь!
Объяснение:
источник
Сетчатка ,
2423 байтатанки Мартину Эндеру за -1 байт
Попробуйте онлайн!
источник
Python 2 , 48 байт
Попробуйте онлайн!
источник
Pyth , 8 байт
Попробуй это здесь!
объяснение
источник
Древесный уголь , 13 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
R ,
635857 байтПопробуйте онлайн!
M
является основной строкой,P
является стержнем.Ответ Retina на ovs показал, что я могу исправить мою более раннюю попытку подхода регулярных выражений
добавив
?
в первую группу захвата.источник
Java 8, 47 байт
Попробуйте онлайн
источник
JavaScript (ES6),
4140 байтКонтрольные примеры
Показать фрагмент кода
источник
J , 14 байт
Как это устроено:
Левый аргумент - это стержень, правый - строка, которая должна быть обращена
Попробуйте онлайн!
источник
C
106100 байтПопробуйте онлайн!
источник
SNOBOL4 (CSNOBOL4) , 53 байта
Попробуйте онлайн!
Принимает ввод как Pivot, затем Main, разделенный новой строкой.
Это в основном SNOBOL эквивалент моего R ответа .
источник
Perl 6 , 31 байт
Проверь это
источник
PHP, 62 байта
требует PHP 7.1; может произойти сбой, если в сводной таблице содержатся специальные символы регулярного выражения (
\+*?[^]$(){}=!<>|:-
).без изменений, если Pivot пуст, пустой вывод, если Pivot не на входе.
Беги с
-n
.безопасная версия, 77 байт:
без изменений, если Pivot пуст, пустой вывод, если Pivot не на входе.
Беги с
-n
.версия без регулярных выражений, 71 байт:
выдает предупреждения, если Pivot пуст; без изменений, если Pivot отсутствует на входе.
Беги с
-nr
.Попробуйте их онлайн .
источник
Красный , 63 байта
Попробуйте онлайн!
источник
Swift , 131 байт
Объяснение (без золота)
источник
C (gcc) , 76 байтов
Попробуйте онлайн!
источник
C ++ 11, 64 байта
Лямбда, которая захватывает строки s, p и a, со ссылкой в качестве (in-out).
Тестовый код
источник
Чисто , 83 байта
А
String
в Clean это обычно{#Char}
- массив unboxed (#
)Char
({}
). Эта функция принимает[Char]
вместоString
второй действительной версииString
.Полная функция подписи есть
f :: [.t] .t -> [.t] | [.t <= Char]
.Попробуйте онлайн!
источник
Japt ,
87 байтПопробуй здесь
источник