Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/254: Рейтинг темы: голосов - 254, средняя оценка - 4.70
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
14.03.2015, 02:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от MrGluck Посмотреть сообщение
Для того есть vector. Массивы оставлены для совместимости с С.
vector это костыль для поддержки массивов в C++
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
14.03.2015, 02:11  [ТС]
Цитата Сообщение от XRuZzz Посмотреть сообщение
vector это костыль для поддержки массивов в C++
Ага.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
17.03.2015, 06:04  [ТС]
Предлагаю плюсистам решить простенькую задачку на строки:
Подарок мистера Китаюта
Я уверен на 99.9%, что ни один плюсист не сможет решить эту задачу короче, чем я на D.

Не по теме:

Кстати, std.ratio скорее всего появится к концу 2015 года. В данный момент уже работает core.stdc.... , а к концу 2015 будет работать ещё и core.stdcpp....
P.S. Ведь на wiki.dlang.org написано, что stl будет полностью сожрана phobos'ом к концу 2015. :D

0
12 / 12 / 6
Регистрация: 27.11.2013
Сообщений: 73
17.03.2015, 09:50
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Я уверен на 99.9%, что ни один плюсист не сможет решить эту задачу короче, чем я на D.
Где твоё решение на D?
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2015, 12:02
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Я уверен на 99.9%, что ни один плюсист не сможет решить эту задачу короче, чем я на D.
Если я правильно понял твой код, то ты ж решил её супер неэффективно
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
17.03.2015, 13:35
Цитата Сообщение от Voivoid Посмотреть сообщение
Если я правильно понял твой код, то ты ж решил её супер неэффективно
А где его код? Кроме того, мне непонятно, если «Вы можете выбрать любую строчную букву латинского алфавита и вставить её в любую позицию s», должно ли быть результирующая строка-палиндром словом английского языка? (Примеры с «eye» и «eve» наталкивают на такой вопрос.)
0
 Аватар для TheFox
131 / 67 / 10
Регистрация: 13.05.2013
Сообщений: 437
17.03.2015, 13:44
Цитата Сообщение от korvin_ Посмотреть сообщение
должно ли быть результирующая строка-палиндром словом английского языка?
Нет. В условии для примера testset. И словарь взять негде.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2015, 14:09
Цитата Сообщение от korvin_ Посмотреть сообщение
А где его код?
http://codeforces.ru/contest/505/status
Сделать сортировку по языку, ткнуть в номер сабмита
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
17.03.2015, 15:54
Цитата Сообщение от Voivoid Посмотреть сообщение
Сделать сортировку по языку
Там только по умолчанию, времени отсылки, времени обработки, размеру, времени работы. Впрочем, я так понимаю, вот:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import std.stdio : readln, writeln;
import std.ascii : lowercase;
import std.range : retro, equal;
import std.string : strip;
 
void main() {
    
    string s = readln.strip;
 
    foreach (i; 0 .. s.length + 1)
        foreach (alp; lowercase) {
        auto sCopy = s[0 .. i];
        sCopy ~= alp, sCopy ~= s[i .. $];
            if (equal(sCopy, retro(sCopy))) {
                writeln(sCopy);
                return;
            }
        }
    
    writeln("NA");
}
Забавно, что решение на Хаскелле:
Haskell
1
2
3
4
5
6
7
main = interact $ a . filter h . concat . f . lines
f [x] = map (g [] x) ['a'..'z']
g l [] c = [l ++ [c]]
g l s@(x:xs) c = (l ++ c:s):(g (l ++ [x]) xs c)
h s = s == (reverse s)
a [] = "NA"
a x = head x
Имеет те же результаты (15 мс, 0 кб), что и Дэниса. Что-то мне подсказывает, мерялка у них поломатая. Что вообще можно измерять на таких до смешного маленьких входных данных? =)
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
17.03.2015, 17:35  [ТС]
Цитата Сообщение от Voivoid Посмотреть сообщение
Сделать сортировку по языку, ткнуть в номер сабмита
Промышленные программисты эволюционируют (надо было мне не выкладывать).
Цитата Сообщение от Voivoid Посмотреть сообщение
Если я правильно понял твой код, то ты ж решил её супер неэффективно
Реши эффективнее и короче на C++. Слабо?
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2015, 17:52
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Реши эффективнее и короче на C++. Слабо?
Ну как бы C++ никогда не тягался за звание наиболее лаконичного кода, haskell ему не переплюнуть. То, что написал ты - будет примерно так же и выглядеть на C++. Если делать более эффективное решение, то кода получится скорее всего побольше. Если не поленюсь - напишу
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
17.03.2015, 17:58  [ТС]
Цитата Сообщение от Voivoid Посмотреть сообщение
То, что написал ты - будет примерно так же и выглядеть на C++.
Не будет. Вам придётся написать два лишних цикла вместо этого: s[0 .. i], s[i .. $], как минимум.
Цитата Сообщение от Voivoid Посмотреть сообщение
Если делать более эффективное решение, то кода получится скорее всего побольше. Если не поленюсь - напишу
Ну если напишешь, то с удовольствием посмотрим.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2015, 18:04
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Вам придётся написать два лишних цикла вместо этого: s[0 .. i], s[i .. $], как минимум.
орлы?
C++
1
2
s.substring( 0, i );
s.substring( i );
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
17.03.2015, 18:15  [ТС]
Цитата Сообщение от Voivoid Посмотреть сообщение
орлы?
Орлы всё равно длиннее.
А это как на C++ засолить?
C++
1
if (equal(sCopy, retro(sCopy)))
P.S. К тому же мой орёл универсален: он работает и для строк, и для int-массивов.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2015, 18:26
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
P.S. К тому же мой орёл универсален: он работает и для строк, и для int-массивов.
Ох, вау, если ты думаешь, что это ( т.е. обобщенные алгоритмы ) ново и свежо, то ты ошибаешься Всё это уже почти как 25 лет назад в плюсах было.

C++
1
std::equal( sCopy.cbegin(), sCopy.cend(), sCopy.crbegin() );
обрати внимание на crbegin. Этот метод возвращает reverse iterator
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
17.03.2015, 18:32  [ТС]
Цитата Сообщение от Voivoid Посмотреть сообщение
Всё это уже почти как 25 лет назад в плюсах было.
Ага. В марсианской форме, недоступной обычным смердам.
Хочешь сказать, что s.substring( i ) работает и для int-массивов?
Цитата Сообщение от Voivoid Посмотреть сообщение
обрати внимание на crbegin. Этот метод возвращает reverse iterator
a.reverse - этот метод возвращает reverse массив a.
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2015, 18:35
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Хочешь сказать, что s.substring( i ) работает и для int-массивов?
Ну если надо обобщенное решение, используй std::copy, делов-то
C++
1
std::copy( arr, arr + i, destination );
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
17.03.2015, 19:01  [ТС]
Не.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main() {
    
    std::string s;
    
    std::getline(std::cin, s);
    
    for (size_t i = 0; i <= s.length(); ++i)
        for (char alp = 'a'; alp <= 'z'; ++alp) {
            auto sCopy = s.substr(0, i);
            sCopy += alp, sCopy += s.substr(i);
            if (std::equal( sCopy.cbegin(), sCopy.cend(), sCopy.crbegin() )) {
                std::cout << sCopy << std::endl;
                return 0;
            }
        }
    
    std::cout << "NA" << std::endl;
    
    return 0;
}
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
17.03.2015, 19:05
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Не.
Ну вот, что называется найди 10 отличий. Если очень захотеть, то можно rang'и использовать, тогда for'ы на foreach'и можно будет заменить
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
17.03.2015, 19:27  [ТС]
А зачем заголовочный файл <string> подключать (стрёмный какой-то этот C++)?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// extract to string
#include <iostream>
#include <string>
 
int main()
{
    std::string name;
    
    std::cout << "Please, enter your full name: ";
    std::getline (std::cin,name);
    std::cout << "Hello, " << name << "!\n";
    
    return 0;
}
std::getline (basic_string)
Цитата Сообщение от Voivoid Посмотреть сообщение
Если очень захотеть, то можно rang'и использовать, тогда for'ы на foreach'и можно будет заменить
Так ведь rang'и не входят в стандарт C++, насколько я знаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Закрытая тема Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru