Ваша задача состоит в том, чтобы, как следует из названия, сделать плохую анимацию исчезновения одного слова, превращающегося во второе слово для вас по-настоящему.
Что именно является это «замирание анимации» вы можете спросить?
Чтобы создать эффектную (довольно плохую) анимацию затухания, вы берете две строки, которые будут содержать только печатные символы ASCII. Вы начинаете с печати вашей стартовой строки (первой из двух). Затем вы случайным образом выбираете символ в исходном слове и заменяете его на соответствующий символ в слове, которое хотите анимировать. Когда слова имеют неравную длину, вы должны дополнить их пробелами.
Вы продолжаете делать это до тех пор, пока все символы не будут изменены, но вы не будете менять персонажа с определенным индексом более одного раза . Вот пример ввода / вывода:
Hey -> Peeps
Hey # original string
Hey s # replace char at index 4
Hey s # replace char at index 1
Pey s # replace char at index 0
Pee s # replace char at index 2
Peeps # replace char at index 3
Вы должны написать функцию или полную программу, которая изменяет букву, а затем печатает новую строку с шагом в одну секунду. Формат ввода свободный, но формат вывода строгий.
Это код-гольф , поэтому выигрывает самый короткий код в байтах.
Некоторые тестовые случаи (Форма:) init -> final
:
Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!
Ссылочная реализация в Python 2:
import random
import time
def F(c,f):
print c # before we do stuff
if len(c)>len(f):f+=" "*(len(c)-len(f)) # add padding part 1
if len(f)>len(c):c+=" "*(len(f)-len(c)) # add padding part 2
c, f = list(c), list(f)
ai = [i for i in range(len(c))] # a list for keeping track
while len(ai) > 0: # of available indices
time.sleep(1) # 1 second pause...
i = ai.pop(random.randint(0,len(ai)-1)) # get a random index and remove
c[i] = f[i] # it from the list
print ''.join(c) # print the new string
Ответы:
Pyth -
2524 байтаБудет рефакторинг.
Попробуйте онлайн здесь .
источник
MATL , 33 байта
Попробуйте это в MATL Online . Возможно, вам придется обновить страницу и снова нажать «Выполнить», если она не работает.
В качестве альтернативы, эта версия ( 35 байт ) удаляет экран перед отображением каждой новой строки, что приводит к тому, что вывод «изменяется на месте»:
источник
1Y.
пауза в цикле. Это работает для меня с моего компьютера, используя ChromePerl, 131 + 4 (
-F -l
) = 135 байтНужны
-F
и-l
флаги для запуска, а также-M5.010
(или-E
). Обратите внимание, что если ваша версия perl немного устарела, вам нужно добавить ее-an
в командную строку (которую я добавлю ниже, чтобы показать ее, но она не нужна). Например :Я уверен, что это может быть короче, но я не мог понять, как ... пока! Тем не менее, я не думаю, что это плохой ответ, и, надеюсь, кто-то будет вдохновлен, чтобы сделать его короче (или иметь совершенно другую идею!).
источник
Python 2,
171 169 168163 байтаТестовые случаи на ideone
источник
C # 299 байт
Ungolfed
источник
Perl,
10910899 байтВключает +3 для
-n
Дайте строки на STDIN без окончательного перевода строки
fade.pl
:Работает, как показано, но заменить
\xhh
буквальными символами, чтобы получить заявленную оценку.Этот способ использования
\K
является новым, я думаю ...источник
\K
действительно. Обратите внимание, что\0
в вашем коде их два\xff
, и их можно заменить соответствующими литеральными символами, поэтому число байтов на самом деле равно 108. Также, возможно, вы его не видели, но формат ввода свободен, поэтому, вероятно, что-то вроде `->` в качестве разделителя.Python 3, 214 байтов
Идео это!
источник
Ява,
456454437428 байтUngolfed:
Редактировать: минус 2 байта CAD97
Изменить: минус 17 байт Кевин Круйссен (я немного изменил предложение, повторно используя
j
вместо создания новой переменнойx
для хранения размера)Изменить: минус 9 байт
источник
Arrays::copyOf
звонкахString[]s
аchar[]a
. Кроме того , вы можете играть в гольф ваш первый для цикла:for(;j<l;i.add(j++);
; Вы можете удалитьRandom r=new Random();
и использовать его напрямуюnew Random().nextInt(i.size())
:; Вы также можете добавить,x
к списку инттов и, возможно, цикл пока кwhile((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}
И, возможно, есть еще кое-что в гольфе, которое я пропускаю.PHP,
123121 байтсохранить как файл, выполнить с
php <filename> <string1> <string2>
(илиphp-cgi
)сломать
источник
CJam, 44 байта
Объяснение:
Задержка работает только с использованием интерпретатора Java, а не онлайн-интерпретатора.
Попробуйте онлайн (задержка установлена на 1 мс)
источник
JavaScript (ES6) + HTML, 210 байт
Вызывается с использованием синтаксиса карри:
f("from this")("to this")
.Убрал JS
Тестовый фрагмент
Требуется закрывающая скобка
input
для работы здесь.источник
Рубин, 106 байт
Попробуйте онлайн!
О хорошо Больше не нужно катиться по ссылке «Попробуй онлайн», если это то, что вызывает отрицательные отзывы. Если нет, пожалуйста, дайте мне знать, что я делаю неправильно
источник