Simple programming training puzzle (repeat)

Click For Summary
SUMMARY

This discussion revolves around a simple programming puzzle introduced in an IBM Fortran class for high school students in 1969. The puzzle involves an imaginary machine with a limited instruction set, including 13 instructions and 20 memory locations, where only the first 10 are addressable via branch instructions. Participants are tasked with writing programs to manipulate a paper tape using basic commands such as reading characters, punching symbols, and branching based on input. The challenge emphasizes trial and error due to the simplicity of the instruction set.

PREREQUISITES
  • Understanding of basic programming concepts and logic.
  • Familiarity with the IBM Fortran programming language.
  • Knowledge of input/output operations in programming.
  • Awareness of branching and control flow in programming.
NEXT STEPS
  • Explore the history and evolution of programming languages, focusing on Fortran.
  • Learn about basic I/O operations in programming, specifically in Fortran.
  • Study control flow mechanisms, including branching and looping constructs.
  • Investigate the design and implementation of simple interpreters for custom instruction sets.
USEFUL FOR

This discussion is beneficial for programming educators, students learning Fortran, and enthusiasts interested in the history of programming and instruction set design.

rcgldr
Homework Helper
Messages
8,946
Reaction score
687
This is a repost of an old thread, maybe some new members can give it a shot. This puzzle was included at the start of a casual IBM Fortran programming class for high school students back in 1969. (Yes, I'm that old). I don't know the origin of this puzzle.

An extremely simple and old (1960's) programming language based on an imaginary machine. The machine has two peripherals, at paper tape reader, and a paper tape punch. The character set only includes two characters, Asterisk and Hypen. The CPU has 20 memory locations, which hold instructions, but only the first 10 locations, 0 through 9 are addressable via the branch instruction.

There are only 13 instructions, and 4 basic types of instruction:

T - Read a character from the tape reader. If the character read is a hyphen, execute next instruction. If the character read is an asterisk, skip the next instruction, and execute the instruction following the next instruction. If no character is read because the paper tape is past the end, then the machine will stop.

H - Punch a hypen, then execute next instruction.

A - Punch an asterisk, then execute next instruction.

0 - branch to location 0 and continue execution there.
1 - branch to location 1 and continue execution there.
2 - branch to location 2 and continue execution there.
...
9 - branch to location 9 and continue execution there.

Instruction execution can continue past memory location 9, but these memory locations can't be the target of a branch instruction.

Programming tasks:

1. Write a program to duplicate the paper tape in the reader using the paper tape punch.

2. Write a program to read the paper tape until 3 asterisks in a row are read, then start duplicating the paper tape as in program 1.

3. Write a program to read the paper tape until 3 asterisks in a row are read, then start duplicating the paper tape, but stop all I/O once 3 asterisks in a row are punched during the copy process.

Note that since there are only 13 instructions, trial and error will be good enough to write any of these programs.

To avoid spoilers, please white out your repsonse using
and
tags , or merely indicate that you've solved how to create programs 1, 2, and/or 3.

Example of a failed attempt at a copy program:

Code:
0 1 2 3 4 5 6 7 8 9 X X X X X X X X X X
T H A 0

This program will punch a hyphen and asterisk for every hyphen read, and punch an asterisk for every asterisk read. It's a broken copy program that you'll fix with program assignment 1.
 
Technology news on Phys.org
I never saw this question before, but I've seen WAY too much fortran code written in the same style as the solutions :devil:
 

Similar threads

  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 7 ·
Replies
7
Views
4K
Replies
6
Views
4K
  • · Replies 15 ·
Replies
15
Views
4K
  • · Replies 15 ·
Replies
15
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 37 ·
2
Replies
37
Views
4K
Replies
29
Views
5K
  • · Replies 23 ·
Replies
23
Views
3K
  • Sticky
  • · Replies 13 ·
Replies
13
Views
8K