Объявление

Односложные и бессмысленные темы, не несущие полезную нагрузку или не содержащие в себе вопрос, будут удаляться!

#26 24-06-11 23:53:06

Майор Очевидность
борец со справедливостью
Здесь с 28-10-09
Сообщений: 1,371
LinuxChrome 12.0

Re: Задание для бабуши! Выполнить на руби.

Дестер,
как делали, полным перебором?


all your post are belong to us.

Вне форума

#27 24-06-11 23:53:30

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

Майор Очевидность, на бумажке ручкой, лень писать код.

Вне форума

#28 24-06-11 23:54:50

Майор Очевидность
борец со справедливостью
Здесь с 28-10-09
Сообщений: 1,371
LinuxChrome 12.0

Re: Задание для бабуши! Выполнить на руби.

Дестер,
а, ну тогда похвально!

а задачка и правда так себе.


all your post are belong to us.

Вне форума

#29 25-06-11 00:19:22

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

Код) Но по сравнению с перебором его побольше)

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static int Brute(int[] numbers )
        {
            int delta = numbers[numbers.Length - 1];
            for (int value = delta; ; value += delta)
            {
                bool result = true;
                foreach (var number in numbers)
                {
                    if (value % number != 0)
                    {
                        result = false;
                        break;
                    }
                }
                if(result) return value;
            }
        }

        #region GCD of two integers
       
        public static int GCD(int Value1, int Value2)
        {
            int a;            // local var1
            int b;            // local var2
            int _gcd = 1;     // Greates Common Divisor

            try
            {
                // throw exception if any value=0
                if (Value1 == 0 || Value2 == 0)
                {
                    throw new ArgumentOutOfRangeException();
                }

                // assign absolute values to local vars
                a = Math.Abs(Value1);
                b = Math.Abs(Value2);

                // if numbers are equal return the first
                if (a == b) { return a; }
                // if var "b" is GCD return "b"
                else if (a > b && a % b == 0) { return b; }
                // if var "a" is GCD return "a"
                else if (b > a && b % a == 0) { return a; }

                // Euclid algorithm to find GCD (a,b):
                // estimated maximum iterations: 
                // 5* (number of dec digits in smallest number)
                while (b != 0)
                {
                    _gcd = b;
                    b = a % b;
                    a = _gcd;
                }
                return _gcd;
            }
            catch { throw; }
        }
        #endregion

        #region LCM of two integers
       
        public static int LCM(int Value1, int Value2)
        {
            try
            {
                int a = Math.Abs(Value1);
                int b = Math.Abs(Value2);

                // perform division first to avoid potential overflow
                a = checked((int)(a / GCD(a, b)));
                return checked((int)(a * b));
            }
            catch { throw; }
        }
        #endregion

        static int Hz(int[] numbers)
        {   
            int value = 1;
            if (numbers.Length == 1) return numbers[0];
            List<int> lcms=new List<int>();
            for (int i = 0; i < numbers.Length-1; i++)
            {
                lcms.Add((int) LCM(numbers[i], numbers[i + 1]));
            }
            return Hz(lcms.ToArray());
        }

        static void Main(string[] args)
        {
            var numbers = Enumerable.Range(1, 20).ToList();
            
            //start timer
            Stopwatch timer = new Stopwatch();
            timer.Start();

            //array filtration
            for(int right = 0; right<numbers.Count; right++)
            {
                int rightIndex = numbers.Count - 1 - right;

                for (int left = 0; left < rightIndex; left++)
                {
                    if (numbers[rightIndex] % numbers[left] == 0)
                    {
                        numbers.RemoveAt(left);
                        left--;
                        rightIndex--;
                    }
                }
            }

            int value = Hz(numbers.ToArray());
           
            //stop timer
            timer.Stop();

            //see what we've got after filtration and result
            numbers.ForEach(Console.WriteLine);
            Console.WriteLine("End in {0} ms. Value is {1}", timer.ElapsedMilliseconds, value);
        }
    }
}

Добавлено спустя 01 мин 14 с:

Майор Очевидность пишет:

ну, просто, не понял зачем перебор, когда НОК требует примерно столько же мыслительной активности

Угу, только подумаешь над одним -30 минут, над другим -30 минут, а работать тогда когда?)))


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#30 25-06-11 00:24:45

pavel2403
Разбанен
Откуда: Санкт-Петербург
Здесь с 06-10-09
Сообщений: 1,129
Windows XPInternet Explorer 7.0

Re: Задание для бабуши! Выполнить на руби.

Какой вы тут херней занимаетесь. Вы лучше попробуйте реализовать в 1С бухгалтерские проводки по более чем 1000 счетов и субсчетов в произвольной конфигурации, и по 3 субконто в каждом, да и план счетов при этом произвольный, не стандартный. А я на вас посмотрю, умники, бля...


Господа, вы охуели. Все. ©Cэмен

Вне форума

#31 25-06-11 00:26:47

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

pavel2403, обслуживать тухлых экономистов - это скучно, а вот математика - это романтика и удовольствие.

Вне форума

#32 25-06-11 00:28:51

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

pavel2403 пишет:

Вы лучше попробуйте реализовать в 1С бухгалтерские проводки по более чем 1000 счетов и субсчетов в произвольной конфигурации, и по 3 субконто в каждом, да и план счетов при этом произвольный, не стандартный.

Не, паш, те, кто такие вещи разруливает - быдлокодеры. А те кто такие задачки решает - почетнейшие алгоритмисты олимпиадчики)))))
Ты что, местных стандартов не знаешь?

Добавлено спустя 30 с:

Дестер пишет:

обслуживать тухлых экономистов - это скучно, а вот математика - это романтика и удовольствие.

Во-во-во... Пока я писал - они уже себя проявили)))))


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#33 25-06-11 00:32:34

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

Tiphon пишет:

Пока я писал - они уже себя проявили)))))

Работы и на работе хватает, зачем её сюда тащить?

Вне форума

#34 25-06-11 00:33:43

pavel2403
Разбанен
Откуда: Санкт-Петербург
Здесь с 06-10-09
Сообщений: 1,129
Windows XPInternet Explorer 7.0

Re: Задание для бабуши! Выполнить на руби.

Дестер пишет:

pavel2403, обслуживать тухлых экономистов - это скучно, а вот математика - это романтика и удовольствие.

Если честно, то академические задачки меня не привлекают вобще, я сугубо практик, и решаю практические задачи. По крайней мере за их решение вполне неплохо платят. А вот кто заплатит за эти извращения, кому они нужны???


Господа, вы охуели. Все. ©Cэмен

Вне форума

#35 25-06-11 00:34:51

Майор Очевидность
борец со справедливостью
Здесь с 28-10-09
Сообщений: 1,371
LinuxChrome 12.0

Re: Задание для бабуши! Выполнить на руби.

pavel2403,
сказано же.
тащить работу сюда — не надо.
здесь, если можно так выразиться, зона отдыха.
и программы здесь пишут исключительно «для души».

и, этта, не начинай.
мир, жвачка, перестройка, ok? smile


all your post are belong to us.

Вне форума

#36 25-06-11 00:39:10

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

Майор Очевидность пишет:

тащить работу сюда — не надо.
здесь, если можно так выразиться, зона отдыха.

А это, если можно так выразиться, зона отмазок)))

Майор Очевидность пишет:

мир, жвачка, перестройка, ok?

kill crash destroy


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#37 25-06-11 00:39:59

pavel2403
Разбанен
Откуда: Санкт-Петербург
Здесь с 06-10-09
Сообщений: 1,129
Windows XPInternet Explorer 7.0

Re: Задание для бабуши! Выполнить на руби.

Майор Очевидность пишет:

тащить работу сюда — не надо.

Кто тащит??? Я просто привел пример действительно сложной алгоритмической задачи, причем имеющей строго практичное применение.

Майор Очевидность пишет:

здесь, если можно так выразиться, зона отдыха.

Да ну... я думал зона меряния пиписками, где один меряет попугаями, а второй котятами.


Господа, вы охуели. Все. ©Cэмен

Вне форума

#38 25-06-11 00:41:56

Майор Очевидность
борец со справедливостью
Здесь с 28-10-09
Сообщений: 1,371
LinuxChrome 12.0

Re: Задание для бабуши! Выполнить на руби.

ну всё, началось…

без меня, господа.


all your post are belong to us.

Вне форума

#39 25-06-11 00:51:05

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

pavel2403, просто твоя задача понятна только некоторым. Я вот, например, не знаю 1С. А математические задачки универсальны.

Вне форума

#40 25-06-11 01:07:02

Tiphon
Забанен
Здесь с 08-07-10
Сообщений: 2,718
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

Дестер пишет:

просто твоя задача понятна только некоторым.... А математические задачки...

А метематические задачки вроде существования положительных решений квази-линейных эллиптических уравнений с экспоненциальным возрастанием в эвклидовом пространстве, т.е. те за которые деньги платят - они всем понятны, Ога Ога ОГА!


Квантовая механика - "малопонятный математический курьёз" (с) msAVA - современный учитель.

Вне форума

#41 25-06-11 01:08:31

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

Tiphon, не толстей. Я сказал "задачки", а не задачи.

Вне форума

#42 25-06-11 01:47:51

Skipper_gmr
Участник
Здесь с 15-07-10
Сообщений: 142
Windows XPFirefox 5.0

Re: Задание для бабуши! Выполнить на руби.

Tiphon пишет:

А метематические задачки вроде существования положительных решений квази-линейных эллиптических уравнений с экспоненциальным возрастанием в эвклидовом пространстве, т.е. те за которые деньги платят - они всем понятны, Ога Ога ОГА!

Вы таки думаете, что задачки в этой теме будут

Tiphon пишет:

всем понятны

Вы уверены в этом?
На этом форуме возможно да. Но если взять людей за его пределами, т.е. действительно всех. Внезапно выяснится, что нужно ЗНАТЬ минимум 1 язык программирования, иметь определенный опыт, аналитические  и творческие способности, ну и МОТИВАЦИЮ решать такие задачи.


"Ненависть к Microsoft является болезнью" (с) Линус Торвальдс

Вне форума

#43 25-06-11 20:39:25

MOP3E
Участник
Здесь с 05-10-09
Сообщений: 4,208
Windows 7Firefox 3.6

Re: Задание для бабуши! Выполнить на руби.

Lord_Evil пишет:

Все остальные желающие могут присойденится и быдлокодить на своих любимых языках.

Быдлокодят обычно быдлокодеры. Нормальные программисты квалифицированно решают поставленную задачу.
Банальный VBA (после полутора литров джин-тоника XD):

Sub probe01()
Dim X As Currency, Y As Currency, Z As Currency
Dim Результат As Currency
Dim ЭтоОн As Boolean
Dim Предел As Currency

    Предел = 20
    Результат = 1
    For X = Предел To 1 Step -1
        Результат = Результат * X
        For Y = 1 To Предел
            If (Результат Mod (Y * Y)) = 0 Then
                ЭтоОн = True
                For Z = 1 To Предел
                    If (Z <> Y) And ((Результат Mod (Z * Y)) <> 0) Then
                        ЭтоОн = False
                        Exit For
                    End If
                Next
                If ЭтоОн Then
                    Результат = Результат / Y
                End If
            End If
        Next
    Next
    MsgBox Результат
End Sub

Результат - 232 792 560.

Отредактировано MOP3E (25-06-11 21:20:44)


Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun

Вне форума

#44 25-06-11 21:34:36

Гареев Станислав
Забанен
Откуда: Пятигорск
Здесь с 24-07-10
Сообщений: 3,221
Сайт
LinuxFirefox 4.0

Re: Задание для бабуши! Выполнить на руби.

MOP3E пишет:

Банальный VBA

ностальгия...
уже давно не кодил  sad


Не ламерствуй лукаво.
"А петь мне нельзя - постановление суда" (с) Бендер

Вне форума

#45 26-06-11 00:45:52

MOP3E
Участник
Здесь с 05-10-09
Сообщений: 4,208
Windows 7Firefox 3.6

Re: Задание для бабуши! Выполнить на руби.

Гареев Станислав пишет:

уже давно не кодил

Что мешает заниматься этим в свободное от работы время? Хотя бы для поддержания мастерства.

Добавлено спустя 02 мин 52 с:

Skipper_gmr пишет:

Но если взять людей за его пределами, т.е. действительно всех. Внезапно выяснится, что нужно ЗНАТЬ минимум 1 язык программирования, иметь определенный опыт, аналитические  и творческие способности, ну и МОТИВАЦИЮ решать такие задачи.

Мне вот интересно, на кого ты в данный момент наезжаешь? У луноходов главное априори - "Исходный код открыт, его можно поправить!" Следовательно, они должны знать, как минимум, один язык программирования - чтобы иметь возможность хоть в каком-то исходном коде разобраться и его поправить. Или я что-то не так понимаю?


Я не игрушечный. Я, б*я, коллекционный! (с) Duke Nukem Forever
Я не специалист по [вставить название]. Мне главное концептуально решить задачу! (с) АхаRu.
Линукс - это альтернативная ОС о которой известно, что она не является ОС ну вот просто ни разу. (с) Linups_Troolvalds.
А с какого такого перепугу пользователей линукса должно быть больше 1%? (с) petrun

Вне форума

#46 26-06-11 01:38:54

testicula
Участник
Здесь с 29-04-11
Сообщений: 110
Windows 7Chrome 12.0

Re: Задание для бабуши! Выполнить на руби.

MOP3E пишет:
Гареев Станислав пишет:

уже давно не кодил

Что мешает заниматься этим в свободное от работы время? Хотя бы для поддержания мастерства.

Добавлено спустя 02 мин 52 с:

Skipper_gmr пишет:

Но если взять людей за его пределами, т.е. действительно всех. Внезапно выяснится, что нужно ЗНАТЬ минимум 1 язык программирования, иметь определенный опыт, аналитические  и творческие способности, ну и МОТИВАЦИЮ решать такие задачи.

Мне вот интересно, на кого ты в данный момент наезжаешь? У луноходов главное априори - "Исходный код открыт, его можно поправить!" Следовательно, они должны знать, как минимум, один язык программирования - чтобы иметь возможность хоть в каком-то исходном коде разобраться и его поправить. Или я что-то не так понимаю?

Не обязательно. Можно править текст (скажем переводить интерфейс или справку).

Можно править графику (улучшать скажем иконки или другое оформление).

Да мало ли вещей которые может делать человек не знающий ни одного языка программирования...


- Модератор... ты очень, очень глубоко заблуждаешься...
- Два предупреждения за скрытый мат!

Вне форума

#47 26-06-11 01:47:59

Lord_Evil
Master Of Darkness
Откуда: Deepest Pits Of Hell
Здесь с 06-06-10
Сообщений: 1,862
Сайт
Windows XPInternet Explorer 8.0

Re: Задание для бабуши! Выполнить на руби.

MOP3E пишет:

Нормальные программисты квалифицированно решают поставленную задачу.

Ухты ёлки.. мб я на своем острове отстал от жизни, но всегда считал, подписывание имен переменных иначе, чем на английском, дурным тоном. + Как я уточнил выше, "смысл решения этих задач в том, чтобы само решение состояло из минимального числа итераций." Т.е. перебор "в лоб" не подходит smile
pavel2403, ты сугубо Мистер Многосрёт big_smile Вот решишь предложенную  Майором задачу euler.jakumo.org/problems/view/340.html и тогда мы дружно признаем, что ты крутой авторитет cool А пока расслабляем мозг простыми заданиями.
Задачу euler.jakumo.org/problems/view/4.html на перле я решил вот так:

#!/usr/bin/perl -w
$done=0;
$n=1;
$i=0;
$c=0;
$lower[8]=[[1,9],[3,3],[7,7]];
$lower[7]=[[1,8],[2,4],[2,9],[3,6],[4,7],[6,8]];
$lower[6]=[[1,7],[3,9]];
$lower[5]=[[1,6],[2,3],[2,8],[4,4],[4,9],[6,6],[7,8]];
$lower[4]=[[1,5],[3,5],[5,5],[7,5],[9,5]];
$lower[3]=[[1,4],[2,2],[2,7],[3,8],[4,6],[6,9],[8,8]];
$lower[2]=[[1,3],[9,7]];
$lower[1]=[[1,2],[2,6],[3,4],[4,8],[6,7],[8,9]];
$lower[0]=[[1,1],[3,7],[9,9]];
for($n=9;$n>0;$n--){
    if($done){last;}
    for($i=9;$i>-1;$i--){
        if($done){last;}
        for($c=9;$c>-1;$c--){
            if($done){last;}
            my $pol=($n*100000+$i*10000+$c*1000+$c*100+$i*10+$n);
            $e=990;
            if(substr("$pol",5)==9){$e=$e+3;}
            while($e>100){
                if(!($pol % $e)){
                    $z=$pol/$e;
                    if(length("$z")==3){
                        print "The palindrom is $pol! Sides are $e and $z\n"; $done=1;
                        last;
                    }
                }
                $e=$e-10;
            }
        }
    }
}

Есть ли желающие решить ее с еще меньшим числом итераций?)


Интеллигент боится лишь одного — касаться темы зла и его корней, потому что справедливо полагает, что здесь его могут сразу выeбaть телеграфным столбом.©

Вне форума

#48 26-06-11 04:00:44

Skipper_gmr
Участник
Здесь с 15-07-10
Сообщений: 142
Windows XPFirefox 5.0

Re: Задание для бабуши! Выполнить на руби.

MOP3E пишет:

Мне вот интересно, на кого ты в данный момент наезжаешь?

Просто излагаю свои мысли, а низзя шоле? smile


"Ненависть к Microsoft является болезнью" (с) Линус Торвальдс

Вне форума

#49 26-06-11 09:21:27

Гареев Станислав
Забанен
Откуда: Пятигорск
Здесь с 24-07-10
Сообщений: 3,221
Сайт
LinuxFirefox 4.0

Re: Задание для бабуши! Выполнить на руби.

MOP3E пишет:

Что мешает заниматься этим в свободное от работы время?

Любая идея из приходящих мне в голову кажется не оригинальной и несовершенной.

Да и личные проблемы не дают сосредоточиться. Близок к отчаянию.


Не ламерствуй лукаво.
"А петь мне нельзя - постановление суда" (с) Бендер

Вне форума

#50 26-06-11 14:44:27

Дестер
Капитан
Здесь с 09-11-10
Сообщений: 737
Сайт
UbuntuFirefox 3.6

Re: Задание для бабуши! Выполнить на руби.

Lord_Evil, не понял ваш скрипт. Имелось в виду

#!/usr/bin/perl -w
for ($i=999; $i>900; $i--)
{
    # Формируем палиндром
    @symbols = split(//,$i);
    $palindrome = $i.$symbols[2].$symbols[1].$symbols[0];
    
    # Ищем наибольший делитель
    for ($j=999; $j>900; $j--)
    {
        if( ($palindrome % $j == 0)&&($palindrome / $j < 1000) )
        {
            print "$palindrome = $j * ", $palindrome/$j," \n";
            exit();
        }
    }
}

нечто вот такое?

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.013 сек, 7 запросов выполнено - Использовано памяти: 1.8 Мбайт (Пик: 1.89 Мбайт) ]