Программисты всегда остаются собой.

Программисты всегда остаются собой.
Вы смотрите срез комментариев. Показать все
12
Автор поста оценил этот комментарий
только конченный программист применит регулярку в данном случае
раскрыть ветку (40)
5
Автор поста оценил этот комментарий
Я тоже болен?

phrase="Роскомнадзор запретил букву "
set="А Б В Д Е З И К Л М Н О П Р С Т У"
for i in $set; do
phrase=`echo "$phrase" | sed "s/${i}//I"`; echo "$phrase$i"; done

С кириллицей /I работает странно.
раскрыть ветку (30)
7
Автор поста оценил этот комментарий
Тьфу, это не /I странно работает, это я мудак g забыл. /Ig, конечно.
раскрыть ветку (12)
1
Автор поста оценил этот комментарий
Я конечно понимаю, что человек может ошибиться, но называть его за это мудаком? Даже, если себя...
Надо ведь быть добрее к людям (ведь если ты считаешь себя таким, то и другие люди, которые допустят ошибку в этом месте, по идее то же должны быть мудаками)
раскрыть ветку (10)
12
DELETED
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (7)
7
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (6)
1
Автор поста оценил этот комментарий
А чем он рисует, извините?
раскрыть ветку (4)
6
Автор поста оценил этот комментарий
Лазерным мечом, грязный извращенец.
1
Автор поста оценил этот комментарий
?
Иллюстрация к комментарию
Автор поста оценил этот комментарий
Похоже на мороженку, вроде
ещё комментарий
Автор поста оценил этот комментарий
субординацию соблюдай ты, гм
Автор поста оценил этот комментарий
Другим простительно, мне нет.
раскрыть ветку (1)
Автор поста оценил этот комментарий
зачем же так самокритично)
DELETED
Автор поста оценил этот комментарий
Я бы на тоже баше написал)
Автор поста оценил этот комментарий
а можно же просто replace
раскрыть ветку (3)
Автор поста оценил этот комментарий
replace заменяет только первое вхождение. Replace с регуляркой заменит все вхождения
раскрыть ветку (2)
Автор поста оценил этот комментарий
Какая разница, один фиг все в цикле.
раскрыть ветку (1)
Автор поста оценил этот комментарий
В цикле только алфавит, а не целевое слово.
Автор поста оценил этот комментарий
Что это за языки, тут и на скрине?
раскрыть ветку (6)
3
Автор поста оценил этот комментарий
на скрине javascript
Автор поста оценил этот комментарий
C#
Автор поста оценил этот комментарий
Паскаль и тасм.
раскрыть ветку (3)
1
Автор поста оценил этот комментарий
Да нет там паскаля, там как минимум присвоение :=
раскрыть ветку (2)
Автор поста оценил этот комментарий
Да что ж ты будешь делать-то. Там js и win cmd с приблудными утилитами.
раскрыть ветку (1)
Автор поста оценил этот комментарий
cmd? Лил.
Автор поста оценил этот комментарий
А нельзя просто упорядочить phrase каким-нибудь стандартно-встроенным способом. И потом set=sort(phrase), условно.
раскрыть ветку (4)
Автор поста оценил этот комментарий
Не совсем вас понял, если опишете алгоритм, который вам видится, буду благодарен.
раскрыть ветку (3)
Автор поста оценил этот комментарий
Ну у нас есть строка-фраза phrase. И нужен "алфавит", который мы задаем через set. В вашем варианте и в варианте из поста set задается перечислением буковок. Можно ленивого его задать как упорядоченную по алфавиту фразу phrase. Т.е. set=sort(phrase). Конструкция может изменяться в зависимости от языка, но смысл такой )
раскрыть ветку (2)
Автор поста оценил этот комментарий
Как идея логично.
Не претендую на то, что я прав, но:

1) Представим, что у нас строка длиннее. Будем парсить всю, пока не найдем весь алфавит?

2) Смотря еще какая реализация стринга. Если строка - массив чаров/нуль-терминированная, то, конечно, это просто. С другими, возможно, игра не будет стоить свеч.

3) В примере у нас строка является константой, так что не имеет смысла тратить процессорное время на ее парсинг.

Хотя, ваша идея смысла не лишена. Но в других обстоятельствах.
Автор поста оценил этот комментарий
JS не имеет нативные инструменты сортировки строк. Зато умеет сортировать массивы, а значит, нужно просто перевести в массив, затем отсортировать, далее обратно в строку.

function getAlpha(text){
var mask, result;
//маска находит повторяющиеся или небуквенные символы
mask = /(.)(?=.*\1)|[^А-яЁёA-Za-z]/g;

//в нижний регистр
result = text.toLowerCase()
//замена по регулярке - отсеиваем совпадения
.replace(mask, '')
//делаем массив из оставшихся букв
.split('')
//сортируем массив по алфавиту
.sort()
//склеиваем из массива строку
.join('');
//возвращаем результат
return result;
}

text = 'Роскомнадзор запретил букву';
console.log(getAlpha(text))
//для вставки в код: var alphabet = getAlpha(text);

По времени вычислений - использовать ли такой метод или проще вбить 33 буквы алфавита, решаем сами:
35мс на 1,000 операций с обычным алфавитом(а-я)
против
57мс на 1,000 операций с использованием данной функции

Однако, в случае с маленькими по длине фразами показатели другие
фраза: "Привет"(вместо бла бла бла роскомнадзор запретил)
28мс на 1,000 операций с обычным алфавитом(а-я)
против
20мс на 1,000 операций с использованием данной функции
Автор поста оценил этот комментарий
Пыхапэ (CLI version)
<?php
$sentence = 'Роскомнадзор запретил букву ';
foreach (str_split('АБВДЕЗИКЛМНОПРСТУ', 2) as $char) {
echo ltrim($sentence) . $char . PHP_EOL;
$sentence = preg_replace("/$char/iu", '', $sentence) ;
}
1
Автор поста оценил этот комментарий
Тогда все буквы в цикле что ли перебирать?
раскрыть ветку (3)
3
Автор поста оценил этот комментарий
Тоже не пойму, к чему тут фраза "конченный программист".
Автор поста оценил этот комментарий
любой аналог string.replace('буква', '') ?
Автор поста оценил этот комментарий
типа так:
char word[29] = "роскомнадзор запретил букву ";
char alph[34] = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
for(int i=0;i<34;i++)
{
cout << word << alph[i] << endl;
for(int l=0;l<2;l++)
for(int j=0;j<29;j++)
if(word[j] == alph[i])
{
for(int k=j;k<29;k++)
{
word[k]=word[k+1];
}
}
???
1
Автор поста оценил этот комментарий
есть подозрение что скорость работы не было приоритетом, по сему и регулярка.
раскрыть ветку (1)
Автор поста оценил этот комментарий
экономить ресурсы обычно вбито на уровне подсознания у любого кто участвовал в большом проекте
Автор поста оценил этот комментарий
может ему лень
Автор поста оценил этот комментарий
char word[29] = "роскомнадзор запретил букву ";
char alph[34] = "бвгдеёжзийклмнопрстуфхцчшщъыьэюя";
for(int i=0;i<34;i++)
{
cout << word << alph[i] << endl;
for(int l=0;l<2;l++)
for(int j=0;j<29;j++)
if(word[j] == alph[i])
{
for(int k=j;k<29;k++)
{
word[k]=word[k+1];
}
}
}
ещё комментарий
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку