Магический возраст
От: AlexGin Беларусь  
Дата: 13.06.18 11:44
Оценка:
Добрый день, уважаемые коллеги!

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

Затем — поменяем местами цифры.
Получим правильное значение моего возраста в шестнадцатиричном виде.

Вопрос: сколько лет мне стукнуло сегодня?

P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.
Отредактировано 13.06.2018 11:59 AlexGin . Предыдущая версия . Еще …
Отредактировано 13.06.2018 11:55 AlexGin . Предыдущая версия .
Re: Магический возраст
От: kov_serg Россия  
Дата: 13.06.18 12:06
Оценка: 3 (2) +5
Здравствуйте, AlexGin, Вы писали:

AG>Добрый день, уважаемые коллеги!


AG>Сегодня у меня ДР

AG>Если мой возраст записать в виде десятичного числа, то получим некое дузначное число.

AG>Затем — поменяем местами цифры.

AG>Получим правильное значение моего возраста в шестнадцатиричном виде.

AG>Вопрос: сколько лет мне стукнуло сегодня?


AG>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.

A*10+B=B*16+A
3A=5B
A=5 B=3

53=0x35
Re: Магический возраст
От: D.Lans Россия  
Дата: 13.06.18 12:08
Оценка: :)
Здравствуйте, AlexGin, Вы писали:

AG>Добрый день, уважаемые коллеги!


AG>Сегодня у меня ДР

AG>Если мой возраст записать в виде десятичного числа, то получим некое дузначное число.

AG>Затем — поменяем местами цифры.

AG>Получим правильное значение моего возраста в шестнадцатиричном виде.

AG>Вопрос: сколько лет мне стукнуло сегодня?


AG>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.


Python:
https://repl.it/@doctorlans/Determine-AlexGin-Age
Re: Магический возраст
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.06.18 12:12
Оценка: 17 (2)
Здравствуйте, AlexGin, Вы писали:

AG>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.


package main

import "fmt"

func main() {
        for i := 10; i < 100; i++ {
                a, b := i/10, i%10
                if a+b*16 == i {
                        fmt.Printf("%d == 0x%d%d\n", i, b, a)
                }
        }
}


$ go run test.go
53 == 0x35

Старость не радость, короче
Re[2]: Магический возраст
От: kov_serg Россия  
Дата: 13.06.18 12:14
Оценка: :))
Здравствуйте, D.Lans, Вы писали:

AG>>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.


DL>Python:

DL>https://repl.it/@doctorlans/Determine-AlexGin-Age
Не кошерно. Надо на C++20 с помощью метапрограммирования сделать
Re[2]: Магический возраст
От: AlexGin Беларусь  
Дата: 13.06.18 12:37
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, AlexGin, Вы писали:

...
Pzz>$ go run test.go
Pzz>53 == 0x35

Pzz>Старость не радость, короче


Мои года — моё богатство

Мне очень понравилось твоё решение — в плане математическом.

P.S. Если не ошибаюсь — язык Go.
Отредактировано 13.06.2018 13:23 AlexGin . Предыдущая версия .
Re[3]: Магический возраст
От: AlexGin Беларусь  
Дата: 13.06.18 12:43
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, D.Lans, Вы писали:


AG>>>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.


DL>>Python:

DL>>https://repl.it/@doctorlans/Determine-AlexGin-Age
_>Не кошерно. Надо на C++20 с помощью метапрограммирования сделать

Можно и на том что счас есть:

#include <string>
#include <sstream>
#include <map>
#include <vector>
#include <algorithm> // std::for_each
#include <memory>

using namespace std;

using MAP_IH = map<int, string>;
using INT_VECTOR = vector<int>;

class CHexCount
{
public:
    CHexCount();
    ~CHexCount();
    MAP_IH& GetMapIntHex();

    INT_VECTOR CalculateMagicNumbers();
private:
    MAP_IH m_mapIntHex;
};


CHexCount::CHexCount()
{    
    for (int i = 1; i < 128; i++)
    {
        stringstream ss;
        ss << std::hex << i;
        string sOut = ss.str();

        m_mapIntHex[i] = sOut;
    }
}
...
INT_VECTOR CHexCount::CalculateMagicNumbers()
{
    INT_VECTOR vectMagicNums;
    std::for_each(cbegin(m_mapIntHex), cend(m_mapIntHex), [&vectMagicNums](pair<int, string> pairIntHex)
    {
        stringstream ss;
        ss << pairIntHex.first;
        string strInt = ss.str();
        
        string strHex = pairIntHex.second;

        int iStrSize1 = strInt.size();
        int iStrSize2 = strHex.size();
        if ((iStrSize1 == 2) && (iStrSize2 == 2))
        {
            char chrInt0 = strInt[0];
            char chrInt1 = strInt[1];
            if ((strHex[0] == chrInt1) && (strHex[1] == chrInt0))
            {
                vectMagicNums.push_back(pairIntHex.first);
            }
        }
    });
    return vectMagicNums;
}
Отредактировано 13.06.2018 12:45 AlexGin . Предыдущая версия .
Re[3]: Магический возраст
От: vopl Россия  
Дата: 13.06.18 13:21
Оценка: 14 (2)
Здравствуйте, kov_serg, Вы писали:

DL>>Python:

DL>>https://repl.it/@doctorlans/Determine-AlexGin-Age
_>Не кошерно. Надо на C++20 с помощью метапрограммирования сделать

https://godbolt.org/g/yJ588p
Re[4]: Магический возраст
От: kov_serg Россия  
Дата: 13.06.18 13:41
Оценка: :)
Здравствуйте, vopl, Вы писали:

V>Здравствуйте, kov_serg, Вы писали:


DL>>>Python:

DL>>>https://repl.it/@doctorlans/Determine-AlexGin-Age
_>>Не кошерно. Надо на C++20 с помощью метапрограммирования сделать

V>https://godbolt.org/g/yJ588p

Старый добрый C++
template<int n> struct C { enum {
    ab=C<n-1>::ab+1,
    a=ab/10,
    b=ab%10,
    h=b*16+a,
    r=(ab==h)?ab:C<n-1>::r
};};
template<>struct C<0> { enum { r,ab=r }; };

#include<iostream>
int main(int argc,char** argv) {
    std::cout<<"age="<<C<99>::r<<std::endl;
    return 0;
}
Re: Магический возраст
От: Muxa  
Дата: 13.06.18 13:43
Оценка: :)))
Задание не читал.

AG>Вопрос: сколько лет мне стукнуло сегодня?

AG>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.

Ответ: 53
#include <iostream>

void main()
{
   int year;
   std::cout << "Vvedite god vashego rozhdeniya: ";
   std::cin >> year;
   std::cout << 2018 - year;
}
Отредактировано 13.06.2018 13:53 Muxa . Предыдущая версия .
Re: Магический возраст
От: D.Lans Россия  
Дата: 14.06.18 06:25
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Добрый день, уважаемые коллеги!


AG>Сегодня у меня ДР

AG>Если мой возраст записать в виде десятичного числа, то получим некое дузначное число.

AG>Затем — поменяем местами цифры.

AG>Получим правильное значение моего возраста в шестнадцатиричном виде.

AG>Вопрос: сколько лет мне стукнуло сегодня?


AG>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.


SQL Server
DECLARE @s bigint = 10
    ,   @e bigint = 100

;WITH 
Z AS (SELECT 0 z FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15)) T(n)),
Y AS (SELECT 0 z FROM Z a, Z b, Z c, Z d, Z e, Z f, Z g, Z h, Z i, Z j, Z k, Z l, Z m, Z n, Z o, Z p),
N AS (SELECT ROW_NUMBER() OVER (PARTITION BY 0 ORDER BY z) n FROM Y)

SELECT TOP 1 @s + n - 1 age FROM N /* ни в коем случае не ставить больше top 1 */
WHERE @s + n - 1 = (@s + n - 1) % 16 * 10 + (@s + n - 1) / 16
Re[2]: Магический возраст
От: vopl Россия  
Дата: 14.06.18 07:25
Оценка: 1 (1) +1
Здравствуйте, D.Lans, Вы писали:

DL>SQL Server

DL>
DL>DECLARE @s bigint = 10
DL>    ,   @e bigint = 100

DL>;WITH 
DL>Z AS (SELECT 0 z FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15)) T(n)),
DL>Y AS (SELECT 0 z FROM Z a, Z b, Z c, Z d, Z e, Z f, Z g, Z h, Z i, Z j, Z k, Z l, Z m, Z n, Z o, Z p),
DL>N AS (SELECT ROW_NUMBER() OVER (PARTITION BY 0 ORDER BY z) n FROM Y)

DL>SELECT TOP 1 @s + n - 1 age FROM N /* ни в коем случае не ставить больше top 1 */
DL>WHERE @s + n - 1 = (@s + n - 1) % 16 * 10 + (@s + n - 1) / 16
DL>


Postgres
SELECT age FROM generate_series(10, 99) AS age WHERE age = age%16*10 + age/16;
Re: Магический возраст
От: Vlad_SP  
Дата: 14.06.18 08:23
Оценка: +1
Здравствуйте, AlexGin,

Вот такие задачки мой сын решал в третьем (!!) классе без всякого там заумного "программирования". Разве что про шестнадцатиричную систему он пока не знает — все задачки на перестановки цифр решались в привычной десятичной системе. А правильное решение привел коллега kov_serg.
Re[2]: Магический возраст
От: AlexGin Беларусь  
Дата: 14.06.18 13:20
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Вот такие задачки мой сын решал в третьем (!!) классе без всякого там заумного "программирования".


Значит — есть повод гордиться сыном!!!

V_S>Разве что про шестнадцатиричную систему он пока не знает — все задачки на перестановки цифр решались в привычной десятичной системе. А правильное решение привел коллега kov_serg.


ИМХО — правильных решений может быть более одного.

Коллеги kov_serg и vopl предоставили математическое решение.
При этом товарищ vopl составил для этого программку.

Все остальные — программировали решение методом подбора. Этот подход ИМХО также имеет право на жизнь
Re[3]: Магический возраст
От: vopl Россия  
Дата: 14.06.18 19:47
Оценка:
Здравствуйте, AlexGin, Вы писали:

...

AG>Коллеги kov_serg и vopl предоставили математическое решение.

AG>При этом товарищ vopl составил для этого программку.

AG>Все остальные — программировали решение методом подбора. Этот подход ИМХО также имеет право на жизнь


Вообще то, я тоже брутфорсил
Re[4]: Магический возраст
От: Vlad_SP  
Дата: 15.06.18 06:06
Оценка:
Здравствуйте, vopl,

тут еще засада в том, что в наш век "цифровых технологий" написать на аналоговом листочке аналоговым карандашом чисто математическое решение, которое привел коллега kov_serg — занимает меньше времени, чем даже запуск сильно простой IDE (CodeBlocks, к примеру). А если не видно разницы — зачем платить больше тратить время?
Re[5]: Магический возраст
От: vopl Россия  
Дата: 15.06.18 16:02
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Здравствуйте, vopl,


V_S>тут еще засада в том, что в наш век "цифровых технологий" написать на аналоговом листочке аналоговым карандашом чисто математическое решение, которое привел коллега kov_serg — занимает меньше времени, чем даже запуск сильно простой IDE (CodeBlocks, к примеру). А если не видно разницы — зачем платить больше тратить время?


Ну, хз... Зависит от задачи и правильности выбора инструмента, на мой взгляд. Сколько лет прожил Диофант? На калькуляторе чик-чик-готово. А на бумажке я бы пыхтел с цифирями этими...
Re: Магический возраст
От: SkyDance Земля  
Дата: 15.06.18 16:41
Оценка:
AG>P.S. Желательно показать код (на любом известном Вам языке), доказывающий Вашу правоту.

Eshell V9.3.2 (abort with ^G)

1> [io:format("~b~n", [N]) || N<-lists:seq(11,99), lists:reverse(integer_to_list(N,16)) == integer_to_list(N)].

53
Re[2]: Магический возраст
От: IID Россия  
Дата: 18.06.18 13:25
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Вот такие задачки мой сын решал в третьем (!!) классе без всякого там заумного "программирования". Разве что про шестнадцатиричную систему он пока не знает — все задачки на перестановки цифр решались в привычной десятичной системе.


Я своей дочке рассказал про системы счисления и научил конвертировать между DEC, BIN и HEX в её первом классе.
kalsarikännit
Re: Магический возраст
От: Mishka Норвегия  
Дата: 20.06.18 11:08
Оценка:
в Excel формулы:

10 =LEFT(B4,1) =RIGHT(B4,1) =VALUE(D4&C4) =DEC2HEX(E4) =TRIM(B4)=TRIM(F4)

10 1 0 1 1 FALSE
11 1 1 11 B FALSE
12 1 2 21 15 FALSE
13 1 3 31 1F FALSE
14 1 4 41 29 FALSE
15 1 5 51 33 FALSE
16 1 6 61 3D FALSE
17 1 7 71 47 FALSE
18 1 8 81 51 FALSE
19 1 9 91 5B FALSE
20 2 0 2 2 FALSE
21 2 1 12 C FALSE
22 2 2 22 16 FALSE
23 2 3 32 20 FALSE
24 2 4 42 2A FALSE
25 2 5 52 34 FALSE
26 2 6 62 3E FALSE
27 2 7 72 48 FALSE
28 2 8 82 52 FALSE
29 2 9 92 5C FALSE
30 3 0 3 3 FALSE
31 3 1 13 D FALSE
32 3 2 23 17 FALSE
33 3 3 33 21 FALSE
34 3 4 43 2B FALSE
35 3 5 53 35 TRUE

Отредактировано 20.06.2018 11:09 Mishka . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.