Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/254: Рейтинг темы: голосов - 254, средняя оценка - 4.70
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
11.02.2015, 21:06
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
"должен присутствовать оператор, который выводит на экран цифры" (такого оператора ни в Хаскелл нет, ни в Си)
Да ладно придираться к мелочам, всем понятно, что имелась в виду процедура.

Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
"В этой функции вам разрешается инициализировать одну новую переменную" - в Haskell нет переменных.
И здесь всем Хаскеллистам понятно, что нужна IORef (или ST, но т.к. в любом случае IO будет для взаимодействия с юзером, плодить монады не обязательно).
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.02.2015, 02:11  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Вот это фейл, в вэ goto заменили на continue.
goto тоже оставили.
Цитата Сообщение от korvin_ Посмотреть сообщение
Наличие многочисленные вложенные циклы — признак говнокода.
Мне раньше всегда так говорили, и я даже начал в это верить. Но когда я увидел код чемпиона мира по программированию, то я понял, что это полный бред:
Разрезание массива
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <cstring>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <memory.h>
#include <cassert>
 
using namespace std;
 
const int inf = (int)1e9;
const int N = 30010;
const int K = 210;
 
int f[N][K][2][3][3];
int a[N];
 
void check(int &a, int b) {
  if (b > a) a = b;
}
 
int main() {
  int n, k;
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%d", a + i);
  }
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= k; j++) {
      for (int in = 0; in < 2; in++) {
        for (int c1 = 0; c1 < 3; c1++) {
          for (int c2 = 0; c2 < 3; c2++) {
            f[i][j][in][c1][c2] = -inf;
          }
        }
      }
    }
  }
  f[0][0][0][1][1] = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= k; j++) {
      for (int in = 1; in >= 0; in--) {
        for (int c1 = 0; c1 < 3; c1++) {
          for (int c2 = 0; c2 < 3; c2++) {
            int ft = f[i][j][in][c1][c2];
            if (ft == -inf) {
              continue;
            }
            if (!in) {
              check(f[i + 1][j][0][c1][c2], ft);
              if (j < k) {
                for (int nc2 = 0; nc2 < 3; nc2++) {
                  if ((nc2 == 1) != (j + 1 == k)) {
                    continue;
                  }
                  check(f[i + 1][j + 1][1][c1][nc2], ft + a[i] * ((c1 - 1) + (nc2 - 1)));
                }
              }
            } else {
              check(f[i + 1][j][1][c1][c2], ft + a[i] * ((c1 - 1) + (c2 - 1)));
              check(f[i][j][0][2 - c2][1], ft);
            }
          }
        }
      }
    }
  }
  printf("%d\n", max(f[n][k][0][1][1], max(f[n][k][1][2][1], f[n][k][1][0][1])));
  return 0;
}
Разрезание массива

Цитата Сообщение от Voivoid Посмотреть сообщение
Совсем убрали? Плохо, даже очень плохо. Как кодогенерировать - непонятно.
Ну они написали, что любую макроподстановку можно чем-нибудь заменить.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
12.02.2015, 02:18
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Мне раньше всегда так говорили, и я даже начал в это верить. Но когда я увидел код чемпиона мира по программированию, то я понял, что это полный бред:
Не путайте реальные задачи с олимпиадными.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.02.2015, 02:24  [ТС]
Цитата Сообщение от S_el Посмотреть сообщение
Не путайте реальные задачи с олимпиадными.
А кто запрещает использовать многовложенные циклы в промышленном программировании. Всё зависит от качества программиста. Обычный программист даже и не сможет написать такое сложное решение с пятимерным массивом и с пятью циклами. Например, я не смогу. Дело не в этом. Этот чемпион мира сможет решать любые задачи и составлять любые алгоритмы, хоть в олимпиадном программировании, хоть в промышленном.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
12.02.2015, 02:27
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Но когда я увидел код чемпиона мира по программированию, то я понял, что это полный бред
Хм, это совсем не бред. Программа для соревнования предназначениа для одноразового использования.

Добавлено через 1 минуту
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А кто запрещает использовать многовложенные циклы в промышленном программировании
Как бы суть в том, чтобы писать понятно для других. Понимаете?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.02.2015, 02:46  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Как бы суть в том, чтобы писать понятно для других. Понимаете?
Понимаю. Но говорить, что многовложенные циклы - это однозначно плохо, тоже не следует. Просто у этого человека родители программисты , и начал он программировать с очень раннего детства, поэтому отлично понимает работу даже многовложенных циклов.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
12.02.2015, 07:54
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Код C++
если не можешь граммотно задачу поставить то сразу бы и показал чего тебе там надо было. называется стейт машина, требовать использовать в стейт машине циклы могут только совсем безграммотные императивщики (я конечно понимаю что система образования совсем сгнила, но хоть для себя изучи разницу в условиях "нельзя использовать ..." и "нужно использовать... " последнее при постановке задачи применяют или дебилы или менеджеры, впрочем второе зачастую подмножество первого)

итак вменяймая реализация невменяймой задачи с бредом про передачу по ссылке и видимость чегото там
(в foo доп переменную по условую не ввел. извини уж - белым людям такие мелочи не нужны)
и как грилось "мне пофиг что дэшники нефига непоймут в этом коде" (с) Dennis Ritchie
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
let fx = [|
    (=) 5, fun i -> printf "1"
    (=) 3, fun k -> printf "2"
    (=) 3, fun l -> printf "3"
    (=) 5, fun m -> printf "4"
    (=) 3, fun n -> printf "5"
    |]
 
let foo x = 
        printfn "\nEnter a label: "
        x := System.Console.ReadLine() |> int
 
let ix = Array.create fx.Length 0
let label = ref 0
printfn "label = %i" !label
let rec loop i = 
    if i >= ix.Length then
        foo label
        printfn "newlabel = %i" !label
        next !label
    else 
        ix.[i] <- 0 
        snd fx.[i] <| ix.[i]
        loop (i + 1)
and next n = 
    let n = n - 1
    if n < 0 || n >= fx.Length then printfn "The end!" else 
    ix.[n] <- ix.[n] + 1
    if ix.[n] |> fst fx.[n] then next n else 
    snd fx.[n] <| ix.[n]
    loop (n + 1)
loop 0
http://ideone.com/HmDQPL
найти 10 отличий в выводе
и да .. на всякий случай. +1 цикл == + 1 строка в fx. что там в дэ?

Добавлено через 15 минут
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Если я правильно понял ограничение задачи с xor-ами, то Вы могли бы написать что то вроде
это частное решение, стоит немного изменить формулу и мозг сломается в попытке подобрать решение, в котором к томуже можно легко совершить ошибку
0
12.02.2015, 08:54  [ТС]

Не по теме:

А чего вы говорили, что F# - это ФЯП? :D
Смотрите какой я замечательный императивный код накатал =-O:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
open System
 
let a = Console.ReadLine().Split()
 
let mutable tmp = 3
let mutable temp = 0
let mutable j = 0
let mutable k = 0
let f = for i in 0 .. int(a.[0]) - 1 do
            j <- 0
            while j < int(a.[1]) do
                if (i % 2 <> 0) then
                    k <- 0
                    while k < int(a.[1]) - 1 do
                        temp <- i
                        if (temp = tmp) then
                            printf "#"
                            for l in 0 .. int(a.[1]) - 2 do
                                printf "."
                            tmp <- tmp + 4
                            k <- int(a.[1]) - 1
                        else
                            printf "."
                            if (k = int(a.[1]) - 2) then
                                printf "#"
                        k <- k + 1
                    j <- int(a.[1])
                else
                    printf "#"
                j <- j + 1
            printf "\n"
Змейка

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.02.2015, 09:13
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А кто запрещает использовать многовложенные циклы в промышленном программировании. Всё зависит от качества программиста. Обычный программист даже и не сможет написать такое сложное решение с пятимерным массивом и с пятью циклами.
Представь себе, я с шестимерных начал и только потом добрался до одномерных. И циклов наворотил не только в 8 этажей, но ещё и три точки входа в каждый цикл и по три точки выхода. И при этом считал, что совсем не умею программировать, да так оно на тот момент и было. В методе гаусса, например, всего два измерения массива и три уровня циклов, считая с внешним, так я даже его осилил только через 4 месяца после того, а до хоть какой то сортировки добрался аж через два года.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.02.2015, 09:19  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Представь себе, я с шестимерных начал и только потом добрался до одномерных.
А я правильно понимаю, что трёхмерный массив - это два двухмерных массива?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.02.2015, 09:46
Нет. Это двумерный массив одномерных массивов, либо одномерный массив двумерных массивов, либо одномерный массив одномерных массивов одномерных массивов. Многократное обращение к одному элементу даже на двух уровнях циклов сложней двадцати уровней вложения циклов однократном обращении к элементам чего угодно, а без многократного обращения к элементу на нескольких разных уровнях циклов нельзя сделать ни сортировку массива, ни решение систем, ни умножение, или обращение матриц, ни вычисление определителя матрицы, в лучшем случае получится векторное произведение в общем случае размерности, но это и будет потолок сложности, хоть сто уровней вложения циклов накрути.

Добавлено через 15 минут
Причём, сортировку я поначалу осилил абсолютно дикую. Есть два раздельных массива равного размера: исходный и результирующий, в исходном сначала ищется наименьший элемент, потом в результирующий массив копируются все элементы, не превосходящие минимум, потом ищется минимум среди элементов, превосходящих последний скопированный, снова копируются элементы, не превосходящие этот минимум, но больше последнего скопированного до последнего поиска минимума, потом снова ищется минимум среди элементов, превосходящих последний скопированный и так пока какой нибудь элемент не скопируется в последний элемент результирующего массива. А даже пузырьковая сортировка была выше моих скромных возможностей из-за непосредственного обращения в одном операторе (при сравнении) к элементам, адресуемым индексами циклов двух разных уровней.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
12.02.2015, 09:59
Dennis Ritchie, это Тарас, про которого я говорил. Это его фишка использовать многоуровневые Вложенные циклы. Так что тут попахивает патентными войнами. Будьте бдительны.
Цитата Сообщение от taras atavin Посмотреть сообщение
три точки входа в каждый цикл и по три точки выхода
Это как? Скромно прошу научить меня.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
12.02.2015, 10:09
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Но когда я увидел код чемпиона мира по программированию, то я понял, что это полный бред
Ты прав, этот код чемпиона по программированию — полный бред. Совершенно не сопровождаемое, не расширяемое говно.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А кто запрещает использовать многовложенные циклы в промышленном программировании.
Здравый смысл и требования к сопровождаемости кода.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Этот чемпион мира сможет решать любые задачи и составлять любые алгоритмы, хоть в олимпиадном программировании, хоть в промышленном.
Не факт.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
12.02.2015, 10:11
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Смотрите какой я замечательный императивный код накатал
я выделил 2 несовместимых понятия.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
12.02.2015, 10:18  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Не факт.
Факт. Он гений.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.02.2015, 10:26
Цитата Сообщение от castorsky Посмотреть сообщение
Это как?
Это очень по-индусски. На столько, что даже индусы имеют шансы офигеть.
Цитата Сообщение от castorsky Посмотреть сообщение
Скромно прошу научить меня.
Лучше не буду.

Добавлено через 54 секунды
Цитата Сообщение от castorsky Посмотреть сообщение
я выделил 2 несовместимых понятия.
Вообще то они отлично сочетаются.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
12.02.2015, 10:26
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Факт.
Нет, не факт.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Он гений.
Просто олимпиадный задрот.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
12.02.2015, 10:28
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Факт. Он гений.
Языки делают не для гениев, а наоборот. Вон васиком вообще детей обучали.
Цитата Сообщение от taras atavin Посмотреть сообщение
Лучше не буду.
Боитесь?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
12.02.2015, 10:29
Цитата Сообщение от castorsky Посмотреть сообщение
Боитесь?
Того, что Вы начнёте обезьянничать?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
12.02.2015, 10:33
Цитата Сообщение от taras atavin Посмотреть сообщение
Вообще то они отлично сочетаются.
Точно и common lisp этому наглядный пример.

Добавлено через 2 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Того, что Вы начнёте обезьянничать?
Я всегда общался с Вами серьезно.

Добавлено через 1 минуту
Цитата Сообщение от castorsky Посмотреть сообщение
Языки делают
ой, опять не то ляпнул, сейчас буду набигать колодезьныйе дайверы и грабить мои корованы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Закрытая тема Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru