· Jun 6, 2017

Output 9876543210 without using numbers

Hi, Community!

Last weekend we held the Final of InterSystems Contest on InterSystems Caché and DeepSee as a part of IT Planet Student Championship in Sochi. BTW, this year we had about 2 000 participants in InterSystems Contest.

One of the tasks for the finals was to solve the following  with Caché ObjectScript and use the minimum code. 

Problem description

Write a method that would return the string 9876543210, however cls code should not contain numbers 0-9.

The goal is to write the shortest method.

Here's a method signature (it can't be modified):

ClassMethod main() As %String
And call sample:
USER>write ##class(ITPlanet.Task2).main()

Also, here's the code to  check your result's length:

ClassMethod length(class = {$classname()}, method = "main") As %Integer
    #dim methodObj As %Dictionary.MethodDefinition
    set methodObj = ##class(%Dictionary.MethodDefinition).IDKEYOpen(class, method)
    quit methodObj.Implementation.Size

The best result was 25.

What's yours? ;)

Discussion (23)3
Log in or sign up to continue

Ok, exclusively for fun.

I made some improvements and now my score is 9, but if you try very hard, even - 0!
Who less ? ;)

Here is the code:

Class ITPlanet.Task2 Abstract ]

Parameter p = {$zwbunpack("㤸㜶㔴㌲㄰")};

ClassMethod main() As %String


Class ITPlanet.Test Abstract ]

ClassMethod length(
  class = {$classname()},
  method "main"As %Integer CodeMode = expression ]

ClassMethod test(makeDeploy = {$$$NO})
  ;do ##class(ITPlanet.Test).test()

  set classname="ITPlanet.Task2"
  set check=9876543210
  do:makeDeploy $system.OBJ.MakeClassDeployed(classname)
  set result=$classmethod(classname,"main")
  write !,result,!,check,
        !,"correct: ",$select(result=check:"yes",1:"no"),
        !,"length: ",..length(classname)

USER>do ##class(ITPlanet.Test).test()
correct: yes
length: 9
USER>do ##class(ITPlanet.Test).test(1)
correct: yes
length: 0