раскрыть ветку (40)
Я тоже болен?
phrase="Роскомнадзор запретил букву "
set="А Б В Д Е З И К Л М Н О П Р С Т У"
for i in $set; do
phrase=`echo "$phrase" | sed "s/${i}//I"`; echo "$phrase$i"; done
С кириллицей /I работает странно.
phrase="Роскомнадзор запретил букву "
set="А Б В Д Е З И К Л М Н О П Р С Т У"
for i in $set; do
phrase=`echo "$phrase" | sed "s/${i}//I"`; echo "$phrase$i"; done
С кириллицей /I работает странно.
раскрыть ветку (30)
раскрыть ветку (12)
Я конечно понимаю, что человек может ошибиться, но называть его за это мудаком? Даже, если себя...
Надо ведь быть добрее к людям (ведь если ты считаешь себя таким, то и другие люди, которые допустят ошибку в этом месте, по идее то же должны быть мудаками)
Надо ведь быть добрее к людям (ведь если ты считаешь себя таким, то и другие люди, которые допустят ошибку в этом месте, по идее то же должны быть мудаками)
раскрыть ветку (10)
раскрыть ветку (7)
раскрыть ветку (6)
раскрыть ветку (4)
ещё комментарий
А нельзя просто упорядочить phrase каким-нибудь стандартно-встроенным способом. И потом set=sort(phrase), условно.
раскрыть ветку (4)
раскрыть ветку (3)
Ну у нас есть строка-фраза phrase. И нужен "алфавит", который мы задаем через set. В вашем варианте и в варианте из поста set задается перечислением буковок. Можно ленивого его задать как упорядоченную по алфавиту фразу phrase. Т.е. set=sort(phrase). Конструкция может изменяться в зависимости от языка, но смысл такой )
раскрыть ветку (2)
Как идея логично.
Не претендую на то, что я прав, но:
1) Представим, что у нас строка длиннее. Будем парсить всю, пока не найдем весь алфавит?
2) Смотря еще какая реализация стринга. Если строка - массив чаров/нуль-терминированная, то, конечно, это просто. С другими, возможно, игра не будет стоить свеч.
3) В примере у нас строка является константой, так что не имеет смысла тратить процессорное время на ее парсинг.
Хотя, ваша идея смысла не лишена. Но в других обстоятельствах.
Не претендую на то, что я прав, но:
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 операций с использованием данной функции
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) ;
}
<?php
$sentence = 'Роскомнадзор запретил букву ';
foreach (str_split('АБВДЕЗИКЛМНОПРСТУ', 2) as $char) {
echo ltrim($sentence) . $char . PHP_EOL;
$sentence = preg_replace("/$char/iu", '', $sentence) ;
}
раскрыть ветку (3)
типа так:
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];
}
}
???
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)
экономить ресурсы обычно вбито на уровне подсознания у любого кто участвовал в большом проекте
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];
}
}
}
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];
}
}
}
ещё комментарий