Magik Says Happy Valentines by Drawing a Heart to Console

  • 时间:2020-10-12 15:39:01
  • 分类:网络文摘
  • 阅读:148 次

Hey, it is happy valentines today! And I think it would be nice to please my wife with something special. I am learning Magik – which is a OO programming language developed by GE Smallworld, and the following seems a good learning/coding exercise.

heart Magik Says Happy Valentines by Drawing a Heart to Console magik programming

Drawing a Heart to Console in Magik Programming

Draw a Heart Shape to Console using Magik

Drawing heart is a fun exercise.

# Drawing a heart to the console
# Happy Valentine's Day 2019
_package sw
$

_block
    _local c << 178.as_character() # heart symbol
    _local s << ""

    # Magik does not have a write without printing new lines
    # Therefore, we concatenate output strings
    _local concat << _proc(str, char) 
        >> str + char
    _endproc

    # 5 blank lines
    _for i _over range(1, 5) _loop s << concat(s, %newline) _endloop

    _for i _over range(1, 3)
    _loop
        _for j _over range(1, 32 - 2 * i) _loop s << concat(s, %space) _endloop
        _for k _over range(1, 4 * i + 1)  _loop s << concat(s, c) _endloop
        _for l _over range(1, 13 - 4 * i) _loop s << concat(s, %space) _endloop
        _for m _over range(1, 4 * i + 1) _loop s << concat(s, c) _endloop
        s << concat(s, %newline)        
    _endloop

    _for i _over range(1, 3)
    _loop
        _for j _over range(1, 24 + 1) _loop s << concat(s, %space) _endloop
        _for k _over range(1, 29)  _loop s << concat(s, c) _endloop
        s << concat(s, %newline)        
    _endloop

    _for i _over range(7, 1, -1)
    _loop
        _for j _over range(1, 40 - 2 * i) _loop s << concat(s, %space) _endloop
        _for k _over range(1, 4 * i - 1)  _loop s << concat(s, c) _endloop
        s << concat(s, %newline)        
    _endloop

    _for i _over range(1, 39) _loop s << concat(s, %space) _endloop

    # the last tiny bit
    s << concat(s, c)

    # 5 blank lines
    _for i _over range(1, 5) _loop s << concat(s, %newline) _endloop

    write(s)
_endblock

Magik does not provide a write without adding %newline – therefore we concatenate the output string and print it all once to the console.

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
教你六招辨别保健食品真假的方法  警惕保健食品的五大非法宣传“陷阱”  官员竟然称质疑转基因食品是民众无知  转基因食品的利与弊及潜在危害浅析  食品安全法即将修订 有奖举报或将入法  辽宁省曝光十大食品犯罪典型案例  几种转基因与非转基因食物的差别  判断是否为转基因食品的简单方法  转基因食品与肿瘤等高度相关引关注  善意的谎言:莫须有的健康食品排行榜 
评论列表
添加评论