=============
The Challenge
=============


You are to create a Mayan Number Converter that converts a Mayan number into a decimal and vice versa.

The input is a Mayan number, with digits composed by following elements (given in order of appearance):

  • a period (.) represents one stone,
  • a colon (:) represents two stones,
  • a pipe character (|) represents a stick (five stones), and
  • a hyphen (-) represents the null seashell.


Mayan digits are separated by spaces, and there will be from 1 to 7 digits.

Example:

.:| .:||| ::| ::|| .

The corresponding Output should be the integer equivalent, in this case:

1427881

calculated as follows:

20^4*(3+5) + 20^3*(3+15) + 20^2*(4+5) + 20^1*(4+10) + 20^0*(1)
= 1280000 + 144000 + 3600 + 280 + 1
= 1427881

Analogous, if the input is an integer number, then the output should generate the corresponding Mayan number.

Thus, an input of 1427881 should result in an output of ".:| .:||| ::| ::|| ."

A download is available at http://s91376351.onlinehome.us/kixtart/kixgolf_mnc.zip


=============
Inputs & Outputs
=============


The input is either a string containing a Mayan number as described above or an integer that can be converted into a Mayan Number.

The output is the corresponding integer representing the Mayan number or a string containing the Mayan Number representation of the input integer.


=======
Scoring
=======


All provided test cases representing valid Mayan Numbers must be correctly solved in order to have the KiXgolf score count. However, if a script fails any valid public or non-public test case the KiXgolf score will not count.


=============
General rules
=============


  • The UDF must be written as one or more lines.
  • The UDF is expected to finish in a reasonable time, e.g. if it gets started when the challenge opens, it's expected to be finished by the time the challenge closes even on a somewhat slow computer. The UDF has to be valid during the period that the challenge runs.
  • You can submit scores as often as you want until the deadline, there's no reason to wait until the last minute for a score submission. In fact, other people want to see the score to beat. So don't be a spoilsport by hoarding your score. Submit early and often.
  • The UDF may only use the KiXtart/KiXforms commands/functions/macros, no other code fragments are allowed. Calls to cOM components that are part part of a standard default Windows installation are allowed.
  • Calls to other executables, as long as they are part of a standard default Windows installation are allowed.
  • The use of the KiXforms DLL is also permitted as the KiXforms DLL can now be considered an integral part of KiXtart scripting.
  • The UDF should be self-contained (except for any I/O mentioned in the challenge). In particular, you may not do things like fetching extra data from a remote site or file.
  • You may assume ASCII as character set.
  • You may not use block comments as the KiXgolf Scoring Engine does not support block comments
  • You are not allowed to use additional code that is external to the KiXgolf UDF Collection. All code must be contained within the KiXgolf UDF Collection.
  • You are allowed to only use publicly available versions of KiXtart and KiXforms, private builds or alpha builds are NOT allowed
  • Your submitted score must include the KiXart/KiXforms version used.

When posting KiXtart Golf Scores, please include the KIXGOLF_MNC.TXT file that is created in the script directory. It contains some basic information about the computer that the script is run on and the resulting scores.

========
Deadlines
========


Private coding starts Saturday, July 15, 8am EST
Private coding ends Saturday, July 22, 8am EST
Public coding start Saturday, July 22, 8am EST
Public coding ends Sunday, July 30, 10pm EST


============
Test program
============


A test program is provided to help screen entries and to provide the Golf Score.
Any program that passes the test program can be submitted. If you are surprised that your solution passed the test program, please submit it anyway! That will help me identify bugs in the test program.

================================================================
KiXtart GOLF - How To Play
================================================================


Most importantly, anybody can play, no age restrictions, no penalties, no handicap!

The object in "real" golf is to hit the ball in the hole in the fewest strokes. The object in KiXtart Golf is to get from input (tee) to target (hole) in the fewest keystrokes.

Example: How many positive elements are in array $a?

Array $a could be of structure $a=[1, 2 ,-3, 4, -5, -7, 8, 9]

One approach:
Code:

for $b=0 to ubound($a)
if $a[$b]>0
$c=$c+1
endif
next

for a score of 45.

Another solution is:
Code:
DO
$b=$b+1
if $a[$b]>0
$c=$c+1
endif
UNTIL $b>(UBOUND($a)+1)


for a score of 53.

Better approach: Code sample 1

================================================================
KiXtart GOLF - The Rules
================================================================


1) The goal of KiXtart Golf is to score the lowest strokes.
2) Strokes are all characters in a piece of code except whitespace characters, unless the whitespace character is necessary for the line of code to work. Therefore, carriage returns and line feeds do not count or spaces in between the '=' sign when assigning variables, e.g. '$a = $b' scores 5.
3) Code can be constructed any way you like, as long as it is syntactically correct with KiXtart.
4) The final solution MUST pass all test scripts that accompagny the KiXtart golf challenge.
5) The use of '$' as a variable is allowed.
6) In case of questions about a particular way to count the KiXtart Golf Challenge organizer has the last call.
7) During the private coding phase, no code is allowed to be posted. Violations result in disqualification of said player.
8) During the public coding phase, code should be posted, reused, and borrowed from other players.
9) The test script contains the official KiXgolf scoring engine


You will need the complete package from http://s91376351.onlinehome.us/kixtart/kixgolf_mnc.zip .


Edited by sealeopard (2006-07-15 02:30 PM)
_________________________
There are two types of vessels, submarines and targets.