Lego WeDo is a programming language meant for children, used to play with some simple Lego robotics. It's a visual drag-and-drop language. Here is a screenshot of a divisibility tester written in the language:
There's a lot of "blocks" that can do various things, like writing a number to the screen and performing some super-basic arithmetic with that number. Language quirks include non-nestable loops and support for multi-threading.
How I/O is handled
The only way to handle I/O effectively, as far as I can tell, is to manually type the input numbers into specific text boxes on the screen. For example, "15" and "5" are the inputs to the divisibility program above. Output is simple: it's the number that's on the screen after the program is finished. Above, the output is
1 because 15 is divisible by 5.
A secondary question I have is, since there's not a formal distinction between input values (the 15 and 5) and other hardwired numbers (the -1 and 1), does this actually count as "taking input"?
This language is almost entirely visual with the exception of the extra parameters that can be assigned to a block (the numbers in the program above). So the question is, how should I score it?
I think there's a couple options...
Come up with some terse description to represent a program... like each block counts as X bytes with literal numbers/text counting 1 byte per character.
Look at the raw file size. The above program, when saved to a file, counts as 856 bytes. It contains a lot of additional information, like 2D position of the blocks, what operating system I'm using, etc.
Here is the source file:
x d L Â } Start Display Display GlowBot Text Plug Text 15 Number 1 IsNumber False Platform
Windows NT While Count Inf Snippet 1 Display Plug Display Divide Display GlowBot Display Plug Display Multiply Display GlowBot Text Plug Number -1 Number 1 IsNumber False Platform
Windows NT Display Add Display GlowBot Text Plug Text 1 Number 1 IsNumber False Platform
Windows NT X } Display Subtract Display GlowBot Text Plug Number 5 Number 1 IsNumber False Platform