Rebol3 Code Examplex


Nautical bell

A small program that emulates a nautical bell producing a ringing bell pattern at certain times throughout the day.

Rebol [
    title: "Rosetta code: Nautical bell"
    file:  %Nautical_bell.r3
    url:   https://rosettacode.org/wiki/Nautical_bell
]

forever [
    now-time: now/time

    ;; seconds until next half-hour mark
    wait (29 - (now-time/minute % 30)) * 60 + 60 - now-time/second

    prin format [<yyyy-mm-dd hh:mm> " | "] now-time: now/time

    ;; Bells...
    if zero? n: (now-time/hour * 2 + (now-time/minute / 30)) % 8 [n: 8]
    loop n / 2 [prin "^Gbang"  wait 2  prin "-bang ^G"  wait 2]
    if odd? n  [prin "^Gbang"]
    print ""
]

Output:

2026-07-07 12:30 | bang
2026-07-07 13:00 | bang-bang
2026-07-07 13:30 | bang-bang bang
2026-07-07 14:00 | bang-bang bang-bang
2026-07-07 14:30 | bang-bang bang-bang bang
2026-07-07 15:00 | bang-bang bang-bang bang-bang
2026-07-07 15:30 | bang-bang bang-bang bang-bang bang
2026-07-07 16:00 | bang-bang bang-bang bang-bang bang-bang
2026-07-07 16:30 | bang
2026-07-07 17:00 | bang-bang
2026-07-07 17:30 | bang-bang bang
2026-07-07 18:00 | bang-bang bang-bang
2026-07-07 18:30 | bang-bang bang-bang bang
2026-07-07 19:00 | bang-bang bang-bang bang-bang
2026-07-07 19:30 | bang-bang bang-bang bang-bang bang
2026-07-07 20:00 | bang-bang bang-bang bang-bang bang-bang
2026-07-07 20:30 | bang
2026-07-07 21:00 | bang-bang
2026-07-07 21:30 | bang-bang bang
2026-07-07 22:00 | bang-bang bang-bang
2026-07-07 22:30 | bang-bang bang-bang bang
2026-07-07 23:00 | bang-bang bang-bang bang-bang
2026-07-07 23:30 | bang-bang bang-bang bang-bang bang
2026-07-08 00:00 | bang-bang bang-bang bang-bang bang-bang