powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Интересная задачка на Developer Community
48 сообщений из 48, показаны все 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
Интересная задачка на Developer Community
    #39247570
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitВот ещё https://wwwx.youtube.com/watch?v=-h2EuNe9AOA#t=70
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247723
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,
n*1111 вместо n_n_n_n
круто !
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247825
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Короткие, но мудрёные" решения были, внесу свою лепту в "длинные, но понятные" :)
Написано не в каше.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ToPhone(x)
 n (x)
 s a="abcdefghijklmnopqrstuvwxyz "
 s d=$tr(x,a,"222333444555666777788899990")
 s n=$tr(x,a,"123123123123123123412312341")
 s (y,o)=""
 f i=1:1:$l(d)  s c=$e(d,i)  s:c=o y=y_" "  s o=c  f j=1:1:$e(n,i)  s y=y_c
 q y
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247846
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отмечусь и я. 149:
Код: plaintext
1.
2.
3.
ClassMethod ToPhone(t) As %String [ ProcedureBlock = 1 ]
{
 s s="",a="!""#123ABCQRSabcqrstЃ‚ѓ‘’“”•" f i=1:1:$l(t){s p=$a(a,$a(t,i)-96),j=p\16 s:$e(s,*)=j s=s_" " s s=s_$s('j:0,1:$tr($j("",p#16)," ",j))} q s
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247878
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно короче: 148. Забыл сказать, что код правильно работает только в 8-битных установках Cache.
Код: plaintext
1.
2.
3.
ClassMethod am(t) As %String [ ProcedureBlock = 1 ]
{
 s s="",a="!""#123ABCQRSabcqrstЃ‚ѓ‘’“”•" f i=1:1:$l(t){s p=$a(a,$a(t,i)-96),j=p\16 s:$e(s,*)=j s=s_" " s s=s_$s(j:$tr($j("",p#16)," ",j),1:0)} q s
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247881
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько интересных вариантов, и что самое интересное, не считая сотрудников InterSystems, только русское сообщество вовлеклось, и сколько интересных примеров предложило.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39247959
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, и тарабарщины, до кучи :)
Код: plaintext
1.
2.
ToPhone(x)
 n (x) s (y,o)="" f i=1:1:$l(x) s c=$e(x,i),a=$a(c)-97,z=c]" ",d=a\3+2-("svyz"[c)*z s:d=o y=y_" " s o=d f j=1:1:a-(c]"s")#3+("sz"[c*3)*z+1 s y=y_d
 q y
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248023
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca,

если перенести в Cache, то можно сократить длину до 147 символов. См.
Код: plaintext
1.
2.
3.
ClassMethod gluconat(x) As %String [ ProcedureBlock = 1 ]
{
 s (y,o)="" f i=1:1:$l(x){s c=$e(x,i),a=$a(c)-97,z=c]" ",d=a\3+2-("svyz"[c)*z s:d=o y=y_" " s o=d f j=1:1:a-(c]"s")#3+("sz"[c*3)*z+1 s y=y_d} q y
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248029
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И даже до 143, если не запоминать последний добавленный символ (такой приём уже применяли):
Код: plaintext
1.
2.
3.
ClassMethod gluconatV2(x) As %String [ ProcedureBlock = 1 ]
{
 s y="" f i=1:1:$l(x){s c=$e(x,i),a=$a(c)-97,z=c]" ",d=a\3+2-("svyz"[c)*z s:d=$e(y,*) y=y_" " f j=1:1:a-(c]"s")#3+("sz"[c*3)*z+1 s y=y_d} q y
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248038
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,
До лучших образцов всё равно не досъёживается. :)
А, вот * в $e и в $p - полезный сахар, иногда не хватает таких фич для лаконичности.
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248070
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_caДо лучших образцов всё равно не досъёживается. :)Почему же, вроде как третье место по community - поздравляю!
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248141
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,

Ради последовательности идеи :)
Код: plaintext
1.
2.
3.
ClassMethod gluconatV2(x) As %String [ ProcedureBlock = 1 ]
{
 s y="" f i=1:1:$l(x){s c=$e(x,i),a=$a(c)-97-(c]"r")-(c]"y"),z=c]" ",d=a\3+2*z s:d=$e(y,*) y=y_" " f j=1:1:a#3+("sz"[c)*z+1 s y=y_d} q y
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248377
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
последняя правка
Код: plaintext
1.
2.
3.
ClassMethod gluconatV2(x) As %String [ ProcedureBlock = 1 ]
{
 s y="" f i=1:1:$l(x){s c=$e(x,i),a=$a(c)-97-(c]"r")-(c]"y"),z=c]" ",d=a\3+2*z s:d=$e(y,*) y=y_" " f j=0:1:a#3+("sz"[c)*z s y=y_d} q y
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248403
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_caпоследняя правка
Код: plaintext
1.
2.
3.
ClassMethod gluconatV2(x) As %String [ ProcedureBlock = 1 ]
{
 s y="" f i=1:1:$l(x){s c=$e(x,i),a=$a(c)-97-(c]"r")-(c]"y"),z=c]" ",d=a\3+2*z s:d=$e(y,*) y=y_" " f j=0:1:a#3+("sz"[c)*z s y=y_d} q y
}
на Developer Community теперь результат?
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248404
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)) надо
MX-9, опубликовал ваш вариант на DC .
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248410
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шваров Евгений,
Если это вопрос-разрешение на помещение туда, то и в мыслях не было туда соваться, тем более что я не каше программист.
Это - просто небольшой отдых от основной работы. :)
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248578
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_caШваров Евгений,
Если это вопрос-разрешение на помещение туда, то и в мыслях не было туда соваться, тем более что я не каше программист.
Это - просто небольшой отдых от основной работы. :)
А почему нет? Там это тоже "отдых от работы" )
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248609
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шваров Евгений,
на ваше усмотрение
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248617
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey MaslovМожно короче: 148. Забыл сказать, что код правильно работает только в 8-битных установках Cache.
Код: plaintext
1.
2.
3.
ClassMethod am(t) As %String [ ProcedureBlock = 1 ]
{
 s s="",a="!""#123ABCQRSabcqrstЃ‚ѓ‘’“”•" f i=1:1:$l(t){s p=$a(a,$a(t,i)-96),j=p\16 s:$e(s,*)=j s=s_" " s s=s_$s(j:$tr($j("",p#16)," ",j),1:0)} q s
}
Если последний символ в переменной 'a' будет =$c(161) , то можно укоротить
Код: plaintext
1.
2.
3.
4.
5.
f i=1:1:$l(t){s p=$a(a,$a(t,i)-96),j=p\16 s:$e(s,*)=j s=s_" " s s=s_$s('j:0,1:$tr($j("",p#16)," ",j))} q s
на
f i=1:1:$l(t){s p=$a(a,$a(t,i)-96),j=p\16#10 s:$e(s,*)=j s=s_" " s s=s_$tr($j("",p#16)," ",j)} q s
или
f i=1:1:$l(t){s p=$a(a,$a(t,i)-96),j=p\16#10 s:$e(s,*)=j s=s_" " f n=1:1:p#16 s s=s_j} q s
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248618
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений,

спасибо за публикацию !
в Лиепае сейчас рекордная жара - мы совсем обленились
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248619
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gluconat_ca,
последнее сообщение ошибочно, сорри, Алексей Маслов :)
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39248932
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca,

мне тоже хотелось избежать исключений из правил, но чтобы вписать в общую схему пробел, надо прилепить к строке начало: set a=$c(1)_$j("",64)_<старая a> - и код получается длиннее. Однако спасибо: вы напомнили мне, что s_$tr($j("",N)," ",j) - хоть и самый наглядный, но вовсе не самый короткий способ добавить к строке N символов j. Это позволило сократить код со 148 до 140 символов:
Код: plaintext
1.
2.
3.
ClassMethod am(t) As %String [ ProcedureBlock = 1 ]
{
 s s="",a="!""#123ABCQRSabcqrstЃ‚ѓ‘’“”•" f i=1:1:$l(t){s p=$a(a,$a(t,i)-96),j=p\16 s:$e(s,*)=j s=s_" " f n=1:1:$s(j:p#16,1:1) s s=s_j} q s
}
...
Рейтинг: 0 / 0
Интересная задачка на Developer Community
    #39249015
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov,
я имел ввиду загнать пробел на 27 место после 'z' (об этом,кстати, упустил написать) ,транслировав его во входящей строке в '{', но забыл про саму трансляцию, которая сводит всё на нет своей длиной.
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Интересная задачка на Developer Community
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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