- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
var turn = 0;
function turn_over() {
var text = document.getElementById('turn-over-in').value;
var first_letter = text.charAt(0).toLowerCase();
var last_letter = text.charAt(text.length-1).toUpperCase();
var new_text = first_letter + text.substr(1,text.length-2) + last_letter;
var text_array = new_text.split('');
var inside_out = text_array.reverse();
var turn_over_text = inside_out.join('');
document.getElementById('turn-over-out').value = turn_over_text;
<...>
DrDre 21.05.2014 20:13 # 0
wvxvw 21.05.2014 23:28 # +1
wvxvw 22.05.2014 18:15 # 0
DrDre 23.05.2014 13:35 # 0
wvxvw 23.05.2014 14:22 # +2
Мои варианты такие же идиотские (но я хоть делал это сознательно для развлечения), как и reversed.replace(/^\w/, firstLetter); Там же уже был массив, что мешало в нем же и поменять регистр?
И, кстати, количество кода не осталось таким же, оно уменьшилось. В небытие ушли деструктивные присваивания и мутации. Более того, код выражает суть происходящего минимально доступными средствами (и при этом использует меньше слов, чем если бы использовал, как в вашем примере, не совсем подходящие инструменты).
3.14159265 23.05.2014 14:49 # 0
Ну а что еще могут предложить на ГК?
>Более того, код выражает суть происходящего минимально доступными средствами
Согласен, чистая рекурсия красивее.
Плюс Ваш код recurseAndIncapacitate("fUUU") выдает красивое "Uuuf", а его "UUUf"
wvxvw 23.05.2014 15:22 # 0
wvxvw 23.05.2014 15:35 # 0
3.14159265 23.05.2014 15:47 # +1
Да копировали походу с жабы.
В языках с немутабельными (C#, Java, js) строками широко распространён такой алгоритм - скопируй в мутабельное, поменяй как тебе надо, и преврати обратно в строку.
wvxvw 23.05.2014 16:00 # 0
Вобщем, хз. откуда они так копировали, но либо потеряли много по дороге, либо придумали лишнего.
3.14159265 23.05.2014 17:29 # 0
Не совсем. Встроенный обращается к массиву напрямую, а самописный через полиморфные методы (charAt, length) с проверками диапазоном.
Конечно --server заинлайнит методы, и уберет проверки, и тогда скорость будет такой же.
Но это только --server.
guest 22.05.2014 23:24 # +1
Out[51]: u'Dsa'
Соснули все.
gost 23.05.2014 07:06 # 0
bormand 23.05.2014 07:09 # 0
gost 24.05.2014 07:01 # 0
bormand 24.05.2014 08:24 # 0
DrDre 24.05.2014 10:36 # 0
bormand 24.05.2014 10:41 # +2
Слайсы работают примерно так:
s[0] - нулевой символ строки (или элемент списка)
s[-2] - предпоследний символ строки
s[1:5] - символы с первого по четвертый (правая граница не включительно)
s[0:5:2] - 0 и 2 и 4 символы Вот это питон. Остальное - выхлоп интерактивной консольки. Что тут непонятного то, если знать что такое слайсы (ну кроме непривычного отрицательного шага, который редко кто юзает)?
DrDre 24.05.2014 10:43 # 0
Ну или вот это http://martinfowler.com/bliki/SyntacticNoise.html
bormand 24.05.2014 10:47 # +1
> Syntactic Noise
Ну с этой точки зрения мусора в питоне на порядки меньше, чем в тех же шарпе и крестах (а тем более во всяких ruby). Так что мысль не понял, поясните ;)
DrDre 24.05.2014 10:57 # +1
bormand 24.05.2014 11:12 # +1
Ну все-таки не стоит судить о питоне по одной (к тому же очень редко встречающейся) строчке... Сам язык очень простой. Кроме этих слайсов и упоротого тернарника я там никаких синтаксических извращений не заметил. Нормальный код на питоне отлично читается.
> множества глобальных функций
Ну это точно не о питоне. Там этих встроенно-глобальных функций раз два и обчелся.
> PHP
А вот в php именование реально бесит. Например там есть забавная функция parse_str(), которая... парсит query string'и вида "foo=bar&baz=zzz&answer=42". В питоне с именованием на порядок лучше, но, к сожалению, дурацкие названия и сокращения тоже встречаются.
wvxvw 24.05.2014 20:42 # 0
3.14159265 31.05.2014 02:55 # +4
Трудно объяснить сишко/крестоблядям что всякие значки, особенно когда в разных частях кода они значат СОВЕРШЕННО разное - плохо. Скобочки: каст и приоритет операторов, больше/меньше: крестошаблон, сдвиг, вывод в поток, и собственно сравнение, двоеточие: наследование, тернарник и неймспейс, & и *: указатели, ссылки и операции между числами. [] - массивы и лямбды. Про {} молчу - пиздец.
Вот неплохая подборочка от ЛишпГумно:
http://govnokod.ru/12488
http://govnokod.ru/13344
иллюстрирующая апофеоз ебанутости сиплюструпа.
Плохо изучать, плохо читать, плохо гуглить что же это за тайные знаки.
Ну в пейсоне там действительно мало такого, [::] практически исключение.
За это люблю старый-добрый жс (до ебанутых нововведений) - всяких разных значков там абсолютный минимум.
heleg 30.05.2014 16:31 # 0
3.14159265 23.05.2014 15:14 # +2
> recursion
И запомните - самый эффективный код, зачастную самый простой
http://jsperf.com/string-reverse-compare
Или тупая императивщина побеждает всегда:
Тупо до горя, даже без обменов - как бы написал я.
wvxvw 23.05.2014 15:24 # 0
Жопа в том, что в ж.скрипте reverse деструктивный, и поэтому его нельзя применить к немутабельным строкам. Почему - а потому, что стандарт писалии гении, не иначе.
3.14159265 23.05.2014 15:40 # +2
На самом деле с точки байтоебства десруктивный реверс есть хорошо.
wvxvw 23.05.2014 15:48 # 0
roman-kashitsyn 23.05.2014 15:46 # +2