Си диез / Говнокод #17756 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
int a,b,c,d,e,f, k = 1;
 
 
 
 
            for (a = 0; a < 9; a++)
                for (b = 0; b < 9; b++)
                    for (c = 0; c < 9; c++)
 
                        for (d = 0; d < 9; d++)
                            for (e = 0; e < 9; e++)
                                for (f = 0; f < 9; f++)
                    {
                        if (a + b + c == d + e + f && a+b+c == 13)
                            k = k + 1;
                    }
  
 
 
            Console.WriteLine("кол-во комбинаций: " + k + " ");
            Console.WriteLine("кол-во билетов: " + k * k);

Очередные лабы... God, whyyy...

Запостил: Psilon Psilon, (Updated )

Комментарии (30) RSS

  • "Назовем шестизначное число счастливым, если сумма первых его трех цифр равна сумме последних трех. Подсчитать число счастливых шестизначных цифр, у которых сумма трех цифр равна 13."
    Ответить
    • у которых сумма трех цифр равна 13 - трех первых или трех любых?
      Ответить
    • Ну, собственно, код прост и нагляден. А современному процу до миллиона посчитать - раз плюнуть. В общем для одноразовой лабы сойдёт.
      Ответить
  • ошибки -
    циклы не включают 9
    к изначально 1 а не 0
    возведение в квадрат нинужно
    Ответить
    • digit(X) :- member(X, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]).
      
      lucky(A, B, C) :- 
          digit(A), digit(B), digit(C), 
          AB is A + B, ABC is AB + C, ABC = 13.
      
      findall([A, B, C], lucky(A, B, C), Y), length(Y, Z).
      Y = [[0, 4, 9], [0, 5, 8], [0, 6, 7], [0, 7, 6], [0, 8, 5], [0, 9, 4], [1, 3|...], [1|...], [...|...]|...],
      Z = 75.
      Ответить
      • пролог, пролог, как давно я его не видел!

        main = print. flip (^) 2 $ length  [1|x<-l,y<-l,z<-l, x+y+z ==13]
        	where l = [0..9]
        Ответить
        • Не подскажите че это я квадратичную задачу кубом решаю?
          main = print. flip (^) 2 $ length  [1|x<-l,y<-l, x+y >= 13-9, x+y <= 13]
          	where l = [0..9]
          Ответить
          • Это читерство, так можно и на бумажке решить, а потом ответ подставить.
            Ответить
          • Кстати, flip (^) 2 - это горе от ума. (^2)
            Тут и без квадрата можно обойтись:
            main = print . sum $ xs where
            	xs = [length xs|x<-l,y<-l, x+y >= 13-9, x+y <= 13]
            	l = [0..9]
            Ответить
      • Нооорм. Хотя бага есть - ноль ведущим быть не может.
        Ответить
        • >>кол-во билетов
          >> билетов
          >>ноль ведущим быть не может

          щито?!
          Ответить
      • А я думал на прологе будет самый короткий вариант, а не на хаски. Но то что он будет самым не оптимальным - это точно)
        Ответить
        • use_module(library(clpfd)).
          
          lucky(A, B, C) :- 
              [A, B, C] ins 0..9, maplist(indomain, [A, B, C]), 
              sum([A, B, C], #=, 13).
          
          % ?- findall([A, B, C], lucky(A, B, C), Y), length(Y, Z).

          Если сильно напрячься, то можно и короче (но с библиотеками).
          Ответить
          • подскажите нубцу как это правильно написать, а то я сегодня первый день

            (+/+/+/ 13= (i.+/i.+/i.) 10)^2
            Ответить
            • нашел как квадрат можно так записать. меня нахождение суммы смущает

              *:+/+/+/13=(i.+/i.+/i.)10
              Ответить
  • Помню, сидел я на экологии и решал на бумажке эту задачу. Хотел, чтобы работало для всех систем счисления и для действительно больших чисел, но позже выяснилось, что моя реализация по какой-то причине не работает при двадцати трех и выше десятичных разрядах, ну а также совсем нестабильно работает в системах с основаниями, отличными от десяти. Код показывать не буду, потому что засмеёте, но я строил матрицу, определенно имеющую много общего с треугольником Паскаля, и по ней явно будет видно, что для каждой части шестизначного номера (то есть для левой и правой) количество комбинаций будет равно 75, и, следовательно, искомое число сатанически счастливых билетов будет равно 75 * 75 = 5625. Вот дебаг-вывод программы, если кому из юных читателей вдруг покажется это интересным: http://pastebin.com/iH6w8sHp
    Ответить
  • Самое интересное со 2 по 5 строку. И может быть ещё 17-19.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8