Задание для бабуши! Выполнить на руби. (Страница 2) / Программирование / Форум StopLinux

Объявление

Kwork.ru - услуги фрилансеров от 500 руб.

#26 25-06-11 00:53:30

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 12.0.742.100

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

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

Неактивен

#27 25-06-11 01:19:22

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354
Windows 7Chrome 12.0.742.100

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 - современный учитель.

Неактивен

#28 25-06-11 01:26:47

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 12.0.742.100

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

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

Неактивен

#29 25-06-11 01:28:51

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354
Windows 7Chrome 12.0.742.100

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

pavel2403 пишет:

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

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

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

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

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

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


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

Неактивен

#30 25-06-11 01:32:34

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 12.0.742.100

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

Tiphon пишет:

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

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

Неактивен

Следующие пользователи поставили вам "+1":Майор Очевидность

#31 25-06-11 01:39:10

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354
Windows 7Chrome 12.0.742.100

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

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

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

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

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

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

kill crash destroy


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

Неактивен

#32 25-06-11 01:51:05

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 12.0.742.100

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

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

Неактивен

#33 25-06-11 02:07:02

Tiphon
Участник
Зарегистрирован: 08-07-10
Сообщений: 2,354
Windows 7Chrome 12.0.742.100

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

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

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

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


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

Неактивен

#34 25-06-11 02:08:31

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
Windows 7Chrome 12.0.742.100

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

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

Неактивен

#35 25-06-11 02:47:51

Skipper_gmr
Участник
Зарегистрирован: 15-07-10
Сообщений: 141
Windows XPFirefox 5.0

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

Tiphon пишет:

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

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

Tiphon пишет:

всем понятны

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


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

Неактивен

#36 25-06-11 22:34:36

Гареев Станислав
Вижуалкибергоп
Из Пятигорск
Зарегистрирован: 24-07-10
Сообщений: 3,103
Сайт
LinuxFirefox 4.0.1

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

MOP3E пишет:

Банальный VBA

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


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

Неактивен

#37 26-06-11 02:38:54

testicula
Участник
Зарегистрирован: 30-04-11
Сообщений: 113
Windows 7Chrome 12.0.742.100

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

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

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

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

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

Skipper_gmr пишет:

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

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

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

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

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


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

Неактивен

#38 26-06-11 02:47:59

Lord_Evil
Master Of Darkness
Из Deepest Pits Of Hell
Зарегистрирован: 06-06-10
Сообщений: 1,887
Сайт
Windows XPInternet Explorer 8.0

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

MOP3E пишет:

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

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

Неактивен

#39 26-06-11 05:00:44

Skipper_gmr
Участник
Зарегистрирован: 15-07-10
Сообщений: 141
Windows XPFirefox 5.0

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

MOP3E пишет:

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

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


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

Неактивен

#40 26-06-11 10:21:27

Гареев Станислав
Вижуалкибергоп
Из Пятигорск
Зарегистрирован: 24-07-10
Сообщений: 3,103
Сайт
LinuxFirefox 4.0.1

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

MOP3E пишет:

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

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

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


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

Неактивен

#41 26-06-11 15:44:27

Дестер
Капитан
Зарегистрирован: 09-11-10
Сообщений: 705
Сайт
UbuntuFirefox 3.6.16

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();
        }
    }
}

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

Неактивен

Kwork.ru - услуги фрилансеров от 500 руб.
Мой VPS с 2016 года !
✅ Виртуальные от 300 ₽/месяц, RAM 1-10GB, DISK 20-360 GB;
✅ Выделенные от 3000 ₽/месяц. RAM 4-64GB, DISK до 4TB;
✅ Intel Xeon, SSD, XEN, iLO/KVM, Windows/Linux, Администрирование;
✅ Бесплатно Full Backup и Anti-DDoS.





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

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

Яндекс.Метрика