powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Интересная задачка на Developer Community
25 сообщений из 48, страница 1 из 2
Интересная задачка на Developer Community
    #39246363
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно задача

Это была задача на финал ИТ-Планеты в Екатеринбурге.
Студенты решили за 192 символа.
А у вас что получится?)

Блог InterSystems на Хабре http://habrahabr.ru/company/intersystems/
Каталог статей по технологиям InterSystems http://intersystems.ru/cache/devcorner/habrahabr.html
Видеоканал InterSystems Russia http://www.youtube.com/user/intersystemsrus
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246412
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений,

как считать символы? пробелы, знаки учитываются? Программу в одну строку записывать?
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246429
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Шваров Евгений,

как считать символы? пробелы, знаки учитываются? Программу в одну строку записывать?Пробелы значение имеют, в одну строку можно.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246447
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, ребят, вы простите, но в одну строку - это ад.
Код: plaintext
1.
2.
3.
4.
5.
p(t,l="")
 q:t=""
 f i=1:1:9 s p=$f($lg($lb("","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"),i),$e(t)) q:p
 w:l=i " "
 f j=1:1:p-1 w i
 d p($e(t,2,*),i)
Я насчитал у себя (не считая строки с именем программы)
7+93+10+17+18=145 символов.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246449
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Не, ребят, вы простите, но в одну строку - это ад.
Код: plaintext
1.
2.
3.
4.
5.
p(t,l="")
 q:t=""
 f i=1:1:9 s p=$f($lg($lb("","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"),i),$e(t)) q:p
 w:l=i " "
 f j=1:1:p-1 w i
 d p($e(t,2,*),i)
Я насчитал у себя (не считая строки с именем программы)
7+93+10+17+18=145 символов.нужна функция, и тут 168 байт, считается вообще все, переводы строк тоже
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246454
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

уу, какие вы злые. Ладно, у меня все равно там ошибка (пробел неправильно кодируется).
Кстати, как он должен быть? У Евгения он кодируется нулем, это точно так было? Я уже забыл.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246459
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

да в оригинальной задаче, пробел должен быть нулем
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246486
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот мой вариант на 153
Код: plaintext
1.
2.
3.
ToPhone(s = "")
{
 s r="",c=96,p=1 f p=2:1:9{s k="" f j=1:1:3+(p=7)+(p=9) s k=k_p,c($c($i(c)))=k} f i=1:1:$l(s){s n=$g(c($e(s,i)),0) s:$e(n)=$e(r,*) r=r_" " s r=r_n} q r
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246499
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

не понимаю, как вы считаете, у вас я насчитал 151 символ
А у себя 139
Код: plaintext
1.
p(t)
 s s="" f i=1:1:$l(t){s p=$f(" #######abc#def#ghi#jkl#mno#pqrstuv#wxyz",$e(t,i))-2 s:p\4=$e(s,*,*) s=s_" " f j=1:1:p#4+1 {s s=s_(p\4)}} q s
Но вообще у меня такое ощущение, что я делаю на спор что-то постыдное и мне завтра будет неудобно об этом вспоминать.
И глядя на это я уже перестаю понимать, как это работает.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246533
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

Мощное решение, и тут даже можно сократить немного
Код: plaintext
1.
2.
p(t) {
 s s="" f i=1:1:$l(t){s p=$f(" #######abc#def#ghi#jkl#mno#pqrstuv#wxyz",$e(t,i))-2 s:p\4=$e(s,*) s=s_" " f j=1:1:p#4+1 s s=s_(p\4)} q s 
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246554
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.DAiMor,

не понимаю, как вы считаете, у вас я насчитал 151 символ
А у себя 139
Код: plaintext
1.
p(t)
 s s="" f i=1:1:$l(t){s p=$f(" #######abc#def#ghi#jkl#mno#pqrstuv#wxyz",$e(t,i))-2 s:p\4=$e(s,*,*) s=s_" " f j=1:1:p#4+1 {s s=s_(p\4)}} q s
Но вообще у меня такое ощущение, что я делаю на спор что-то постыдное и мне завтра будет неудобно об этом вспоминать.
И глядя на это я уже перестаю понимать, как это работает.Круто.
Я там предложил уже 2 варианта давать - читабельный для понимания идеи, и такой вот.

Александр, опубликуйте на том форуме ваш вариант?
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246640
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений,

опубликовал, хотя вообще боюсь писать на англоязычных форумах, у меня он на уровне неуверенного чтения.
если пишу, то приходится пользоваться переводчиками, а потом подбирать варианты многозначных слов, что довольно геморно.
Ну и с форумом пришлось побороться, как-то не с первого раза получилось.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246752
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. ,

Можно ещё немного ужать Ваш код:
Код: plaintext
1.
2.
3.
4.
5.
ClassMethod ToPhone(
  t,
  a = " #######abc#def#ghi#jkl#mno#pqrstuv#wxyz") As %String
{
 f i=1:1:$l(t){s p=$f(a,$e(t,i))-2,q=p\4 s:q=$e(s,*) s=s_" " f j=0:1:p#4 s s=s_q} q s
}
Примечание:
1) поскольку изначально приводился в качестве примера метод класса, то и я привожу метод класса;
2) код выше рассчитан на Undefined = 2 ;
3) я так и не понял как рассчитывается "размер кода", поэтому считайте сами, но в любом случае он на 11 символов дожен быть меньше.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246819
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
129
Код: plaintext
s R="" f %=1:1:$l(t) f N=0:1:3 s s=$a($e(t,%)),n=$f("adgjmptw ",$c(s-N)) s:n n=n#10,R=R_$e(" ",R_-1[(n_-1))_$e(n_n_n_n,1,N+1),N=9

если оформить как функцию то 129+9 = 138
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246843
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно еще подсократить:
Код: plaintext
s R="" f %=1:1:$l(t) f N=0:1:3 s n=$f("adgjmptw ",$c($a($e(t,%))-N)) s:n n=n#10,R=R_$e(" ",R_-1[(n_-1))_$e(n_n_n_n,1,N+1),N=9
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246857
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
s R="" f %=1:1:$l(t) f N=0:1:3 s n=$f("adgjmptw ",$c($a($e(t,%))-N)) s:n n=n#10,R=R_$e(" ",R_-1[(n_-1))_$e(n_n_n_n,1,N+1),N=9

скобку -N)) надо
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246861
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо servit

исправлюсь
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246877
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit Блок А.Н. ,

Можно ещё немного ужать Ваш код:
Код: plaintext
1.
2.
3.
4.
5.
ClassMethod ToPhone(
  t,
  a = " #######abc#def#ghi#jkl#mno#pqrstuv#wxyz") As %String
{
 f i=1:1:$l(t){s p=$f(a,$e(t,i))-2,q=p\4 s:q=$e(s,*) s=s_" " f j=0:1:p#4 s s=s_q} q s
}
Примечание:
1) поскольку изначально приводился в качестве примера метод класса, то и я привожу метод класса;
2) код выше рассчитан на Undefined = 2 ;
3) я так и не понял как рассчитывается "размер кода", поэтому считайте сами, но в любом случае он на 11 символов дожен быть меньше.Мне кажется, что это уже читерство.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246883
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Мне кажется, что это уже читерство.поддерживаю
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246936
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Мне кажется, что это уже читерство.Это обсуждаемо .
Но в любом случае f j=1:1:p#4+1 можно заменить на f j=0:1:p#4

PS: вариант MX-9 всё равно пока короче.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39246963
eduard93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit3) я так и не понял как рассчитывается "размер кода", поэтому считайте сами, но в любом случае он на 11 символов дожен быть меньше.
Проверка правильности и подсчёт длины
Код: plaintext
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.
Class User.Validator
{

/// do ##class(User.Validator).Check("User.Converter","ToPhoneNew")
ClassMethod Check(class = "User.Converter", method = "ToPhoneNew")
{
  Write "Checks: "
  Write ..CheckOne(class, method, "hi", "44 444")
  Write ..CheckOne(class, method, "yes", "999337777")
  Write ..CheckOne(class, method, "foo  bar", "333666 6660 022 2777")
  Write ..CheckOne(class, method, "hello world","4433555 555666096667775553")
  Write ..CheckOne(class, method, "st uvw xyz","77778088 8889099 999 9999")
  Write ..CheckOne(class, method, "abcdefghijklmnopqrstuvwxyz","2 22 2223 33 3334 44 4445 55 5556 66 6667 77 777 77778 88 8889 99 999 9999")
  Write !,"Length: "
  Write ..MethodLength(class, method)
}

ClassMethod CheckOne(class, method, in, out)
{
  Return $ClassMethod(class, method, in) = out
}

ClassMethod MethodLength(class, method)
{
  Set m = ##class(%Dictionary.CompiledMethod).IDKEYOpen(class, method)
  Set body = m.Implementation.Read(10000)
  Return $Length(body)
}

}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247172
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eduard93 ,

Т.е. метод должен быть обязательно классовым.

Особое спасибо за внесение ясности в формализацию подсчёта длины кода. Такие принципиальные вещи нельзя замалчивать, ведь это кардинально меняет подход к "решению" задачи.
Учитывая новые данные, окончательный код примет следующий вид:
Код: plaintext
1.
2.
3.
4.
5.
ClassMethod ToPhone(
  t,
  a = "(t){s s="" f i=1:1:$l(t) {f N=0:1:3 s n=$f(""adgjmptw "",$c($a($e(t,i))-N)) s:n n=n#10,s=s_$e("" "",s_-1[(n_-1))_$e(n_n_n_n,1,N+1),N=9} q s}") As %String [ CodeMode = expression ]
{
$xecute(a,t)
}
Размер кода метода - 14 символов. Всё согласно ТЗ и для любого Undefined.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247174
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Шваров Евгений,

опубликовал, хотя вообще боюсь писать на англоязычных форумах, у меня он на уровне неуверенного чтения.
если пишу, то приходится пользоваться переводчиками, а потом подбирать варианты многозначных слов, что довольно геморно.
Ну и с форумом пришлось побороться, как-то не с первого раза получилось.
Хорошо получилось, спасибо!
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247185
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ещё https://wwwx.youtube.com/watch?v=-h2EuNe9AOA#t=70
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247396
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9
Код: plaintext
s R="" f %=1:1:$l(t) f N=0:1:3 s n=$f("adgjmptw ",$c($a($e(t,%))-N)) s:n n=n#10,R=R_$e(" ",R_-1[(n_-1))_$e(n_n_n_n,1,N+1),N=9
Ваш код можно ещё немного ужать:
Код: plaintext
s R="" f %=1:1:$l(t) f N=0:1:3 s n=$f("adgjmptw ",$c($a($e(t,%))-N)) s:n n=n#10,R=R_$e(" ",$e(R,*)=n)_$e(n*1111,1,N+1),N=9
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Интересная задачка на Developer Community
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]