Comments 28
UFO just landed and posted this here
Поменьше эзотерики и чуть покороче решение не Python.
# -*- coding: utf-8 -*- src = u"ССС дддннннннёёёёёёмммм ппппппрррррооооооггггггррррра\ ааааамммммммммммммммииииииссссссттттттаааааа!!!!!!" samp = u"С днём программиста!" b = samp step = 0 while (b.strip()): b = ''.join([src.count(ch)>step*samp.count(ch)+samp[:i].count(ch) and ch or " " for i, ch in enumerate(samp)]) step+=1 print b
+3
И вернем немного эзотерики
a=[samp] while (a[-1].strip()): print a[-1] a += [''.join([src.count(ch)>len(a)*samp.count(ch)+samp[:i].count(ch) and ch or " " for i, ch in enumerate(samp)])]
+7
Симпатично :)
+2
Спасибо. Строка с условием разве что получилась немного длинной. Кто сможет совсем избавиться от while и получить решение в одну строку? ) У меня пока идеи иссякли
+1
Мда… Это уже совсем непонятно беглым взглядом. Давно программируете на питоне?
+1
Вроде как понятно. Единственная проблема в понимании это условие
Оно возвращает символ, если в исходной строке таких символов больше чем в уже написанных строках или же пробел.
a[-1] может выглядеть непонятно, но на практике всего лишь возвращает последний элемент массива.
src.count(ch)>len(a)*samp.count(ch)+samp[:i].count(ch) and ch or " "
Оно возвращает символ, если в исходной строке таких символов больше чем в уже написанных строках или же пробел.
a[-1] может выглядеть непонятно, но на практике всего лишь возвращает последний элемент массива.
+1
Прекрасно) Так и думал, что можно все сделать короче и в одну большую строку, но не стал ломать голову, я просто любитель питона.
Для меня эти скобки [] в питоне самые приятные, в них основная магия.
Для меня эти скобки [] в питоне самые приятные, в них основная магия.
+2
Для brainfuck надо отдельный значок «Осторожно! Он программирует на brainfuck»
+3
я про него, кэп =)
+1
UFO just landed and posted this here
а не подскажете как на Перле все таки ввести оригинальную фразу — то есть на русском?
а то я попробовал тут его вспомнить по сабжевому поводу, но уперся как раз в русский. Из консоли русские символы передаются, но вот split // похоже раскладывает каждый символ на 2, то есть почему-то не понимает Unicode похоже. =(
а то я попробовал тут его вспомнить по сабжевому поводу, но уперся как раз в русский. Из консоли русские символы передаются, но вот split // похоже раскладывает каждый символ на 2, то есть почему-то не понимает Unicode похоже. =(
+1
UFO just landed and posted this here
use utf8; :)
0
К сожалению, эта программа уйдет в бесконечный цикл, если в строке будут символы, отличные от [Congratulis pme`dy!]
0
Очень интересно было увидеть реализации на разных языках, с разными алгоритмами.
Знает ли кто-нибудь подобные задачки?
Знает ли кто-нибудь подобные задачки?
0
Sign up to leave a comment.
Все решения к задачке к Дню Программиста