mgr's weblog

Forth insertion sort

January 26, 2016, Lisp

Long time, no post. To get back into forth after many years (see GPN7: FORTH und TILs) and to practice writing factored code, I tried to write a more idiomatic forth version of insertion sort. That is, factored out into many, really short words (i.e., functions).

To make sure of it, I used the retro line-based block editor of GForth. (Retro as in: Notice that i had to start line 7 with a blank because I really exhausted line 6. smug-smile)

Here you go:

Screen 5 not modified     
 0 forth   \ load forth vocabulary                                 
 1 create nums 4 , 5 , 2 , 1 , 3 , 7 , 0 , 6 , 8 ,                 
 2 here nums - cell / constant #num                                
 3                                                                 
 4 : @num ( n - vN) cell  nums + @ ;                              
 5 : !num ( v n -) cell  nums + ! ;                               
 6 : numswap ( n -) dup @num over 1- dup @num -rot !num swap !num ;
 7  : show #num 0 do i cell  nums + @ . loop ;                    
 8                                                                 
 9 : @2num ( n - n-1 n0) dup 1- @num swap @num ;                   
10 : fix ( n -) dup @2num > if dup numswap then drop ;             
11 : recfix ( n -) dup 0 do dup i - dup @2num <= if leave then     
12    fix loop drop ;                                              
13 : sort ( -) #num 1 do i @2num > if i recfix then loop ;         
14                                                                 
15 editor   \ switch back to editor vocabulary                     

GForth session:

$ gforth
Gforth 0.7.2, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
use blocked.fb  ok
1 load redefined insert   ok
5 l
Screen 5 not modified     
 0 forth   \ load forth vocabulary                                 
 1 create nums 4 , 5 , 2 , 1 , 3 , 7 , 0 , 6 , 8 ,                 
 2 here nums - cell / constant #num                                
 3                                                                 
 4 : @num ( n - vN) cell  nums + @ ;                              
 5 : !num ( v n -) cell  nums + ! ;                               
 6 : numswap ( n -) dup @num over 1- dup @num -rot !num swap !num ;
 7  : show #num 0 do i cell  nums + @ . loop ;                    
 8                                                                 
 9 : @2num ( n - n-1 n0) dup 1- @num swap @num ;                   
10 : fix ( n -) dup @2num > if dup numswap then drop ;             
11 : recfix ( n -) dup 0 do dup i - dup @2num <= if leave then     
12    fix loop drop ;                                              
13 : sort ( -) #num 1 do i @2num > if i recfix then loop ;         
14                                                                 
15 editor   \ switch back to editor vocabulary                     
 ok
5 load  ok
show 4 5 2 1 3 7 0 6 8  ok
sort  ok
show 0 1 2 3 4 5 6 7 8  ok

Here is a version that spits out a bit of debug messages so that you can see what the algorithm does while sorting (! means two elements have to be swapped, + means that the current interation can be stopped early):

Screen 5 not modified     
 0 forth                                                           
 1 create nums 4 , 5 , 2 , 1 , 3 , 7 , 0 , 6 , 8 ,                 
 2 9 constant #num                                                 
 3 : @num ( n - vN) cell  nums + @ ;                              
 4 : !num ( v n -) cell  nums + ! ;                               
 5 : numswap ( n -) dup @num over 1- dup @num -rot !num swap !num ;
 6  : show #num 0 do i cell * nums + @ . loop ;                    
 7 : @2num ( n - n-1 n0) dup 1- @num swap @num ;                   
 8 : debug ( n-) dup . ." - " dup 1- @num .  @num . ;              
 9 : test #num 1 do i debug  i @2num > if ." !" then  ." _" loop ; 
10 : fix dup @2num > if ." ! " dup numswap then drop ;             
11 : recfix ( n -) dup 0 do dup i - dup debug dup @2num <=         
12   if ." + " leave then fix loop drop ;                          
13 : wrecfix ." [" recfix ." ]" ;                                  
14  : sort #num 1 do i debug i @2num > if i wrecfix then  ." _ "   
15    loop ;  editor                                               
 ok
5 load  ok
show 4 5 2 1 3 7 0 6 8  ok
sort 1 - 4 5 _ 2 - 5 2 [2 - 5 2 ! 1 - 4 2 ! ]_ 3 - 5 1 [3 - 5 1 ! 2 - 4 1 ! 1 -
  2 1 ! ]_ 4 - 5 3 [4 - 5 3 ! 3 - 4 3 ! 2 - 2 3 + ]_ 5 - 5 7 _ 6 - 7 0 [6 - 7 0 !
  5 - 5 0 ! 4 - 4 0 ! 3 - 3 0 ! 2 - 2 0 ! 1 - 1 0 ! ]_ 7 - 7 6 [7 - 7 6 ! 
  6 - 5 6 + ]_ 8 - 7 8 _  ok
show 0 1 2 3 4 5 6 7 8  ok

Have fun.

Alex Wenger, Max-Gerd Retzlaff:
The Invisible Tree

December 13, 2012, Electronics

Zum dritten Mal in Folge nehmen Alex Wenger und ich an der Weihnachtsbaumausstellung der Staatlichen Hochschule für Gestaltung Karlsruhe teil:

The Invisible Tree

— shy but photogenic —

Please take a picture!

Alex Wenger & Max-Gerd Retzlaff

The Invisible Tree; click for a larger version (204 kB).

WEB: tannenbaum.matroid.org
FEEDBACK: tannenbaum@matroid.org

Ein unscheinbarer kleiner Kasten. Miit dem bloßen Auge ist nichts zu sehen. Erst im Blick durch eine Kamera (oder auch ein Handy) erscheint auf dem schwarzem Karton ein lila glimmender Baum.



Gemeinsame, frühere Projekte: »uoısuǝɯıp ɹǝɥʇo«, Tannenbaum braucht Zuwendung, LED Cube Modeller, Paraflows edition, and Hacking OpenGL (in Lisp), LED Cube Modeller, 22C3 Edition, LED-Cube (Entropia-Wiki), 3d Baby Cube (Weblog von Alex).

»uoısuǝɯıp ɹǝɥʇo««

June 29, 2011, Electronics

»uoısuǝɯıp ɹǝɥʇo«

»uoısuǝɯıp ɹǝɥʇo«; click for a larger version (202 kB).

Max-Gerd Retzlaff, Alex Wenger, 2011

Wahrnehmung zwischen Mensch und Maschine ist ein ambivalenter Prozeß. Die Bewußtwerdung des Seins und deren Gegenüberstellung mit der Maschinenwahrnehmung eröffnen neue Möglichkeiten der Begegnung.

In »uoısuǝɯıp ɹǝɥʇo« wird der selbstreflektierende Moment spielerisch dargestellt und erfahrbar gemacht. Einzeln oder gemeinsam mit anderen wird der Betrachter analysiert, visualisiert, vernetzt und kann sich selbst reflektieren. Eine wahrnehmungveränderte Dimension wird erschlossen.

WEB: www.other-dimension.net

FEEDBACK: team@other-dimension.net

PDF des Textes / reiner Text

Teil der Ausstellung »Gewebtes Licht« im ZKM vom 1. bis 16. Juli 2011. Ausstellungseröffnung am 1. Juli 2011 im ZKM_Foyer, 16 Uhr, Eintritt frei. Einladung zur Ausstellungseröffnung
Ausschreibung des Wettbewerbs
Flyer zur Ausstellung


Weitere Bilder, Videos und Informationen gibt es unter:
    www.other-dimension.net


Kudos to OpenLase and ECL! Great projects, though both could benefit from a little more documentation. Thanks Héctor for your mails!



Gemeinsame, frühere Projekte: Tannenbaum braucht Zuwendung, LED Cube Modeller, Paraflows edition, and Hacking OpenGL (in Lisp), LED Cube Modeller, 22C3 Edition, LED-Cube (Entropia-Wiki), 3d Baby Cube (Weblog von Alex).

Max-Gerd Retzlaff, Alex Wenger:
Tannenbaum braucht Zuwendung

December 14, 2010, Electronics

Alex Wenger und ich haben unsere erfolgreiche Zusammenarbeit im Rahmen von früheren Projekten wie zum Beispiel dem LED Cube fortgesetzt und nehmen an der 7. Weihnachtsbaumausstellung der Staatlichen Hochschule für Gestaltung Karlsruhe teil:

Tannenbaum braucht Zuwendung

Ein Weihnachtsbaum steht kurz vor seinem Ende. All seine Nadeln hat er bereits verloren. Doch seine Zuversicht strahlt noch aus: er leuchtet noch mit ganzer, letzter Kraft. Der Baum hängt am ETG (Elektrotannenbaumgramm); anhand dessen alter Bildröhre kann sein Zustand genau beobachtet werden und man hört seinen Herzschlag.

Er braucht Zuwendung! Sonst stirbt er. Wird er hin- und wieder vorsichtig gerüttelt — sacht und leicht —, so bleibt er am Leben, läßt seine Lichter leuchten und hat einen regelmäßigen Puls. Doch wird er zu lange vernachlässigt, dann stirbt er. Sein Puls beschleunigt, wird ungleichmäßig und setzt schließlich — so niemand eingreift — aus. Doch Vorsicht: liebloses Durchschütteln ist keine Zuwendung. Rohe Gewalt ist das letzte, was er verkraften kann.

Trotz allem ist ein Weihnachtsbaum allerdings ein robustes Wesen. Auch Gestorben besteht noch Hoffnung: Mit ein wenig Aufmerksamkeit ist er jederzeit durch behutsames Wachrütteln wiederzuerwecken.

WEB: tannenbaum.matroid.org

FEEDBACK: tannenbaum@matroid.org

PDF des Textes / reiner Text



Gemeinsame, frühere Projekte: LED Cube Modeller, Paraflows edition, and Hacking OpenGL (in Lisp), LED Cube Modeller, 22C3 Edition, LED-Cube (Entropia-Wiki), 3d Baby Cube (Weblog von Alex).

GPN8-Plakat fertig! \o/

June 17, 2009, Typography
Last edited on June 17, 2009

GPN8-Plakat; click for a larger version (114 kB).

Yeah!

Ein Web-PDF des Plakates gibt es auch: GPN8-Space-Invader-Plakat-final.pdf. (Nicht für den Ausdruck auf üblichen CMYK-Druckern geeignet.)

Der Druck ist schwarz auf grünem Neonpapier erfolgt, was ziemlich fett aussieht. (Dank für die Hilfe an Flowhase!) Actionshots folgen! :-)

Die Poster haben nun gedruckt und beschnitten eine Größe von etwa 56,8 cm x 83,3 cm, was einem Seitenverhältnis von 1,467 entspricht. Nicht ganz das gewollte Verhältnis 1,492 bei Kinoplakatgröße von 61 x 91 cm, aber näher daran als an dem etwas uneleganten √2-Verhältnis (~1,414) der DIN-Papierformate.

Flyer, Tassen, T-Shirts und Namensschilder gibt es ebenfalls, beziehungsweise sind in der Herstellung. Auch die GPN8-Webseite hat Dank Einsatz von Neingeist und mir ein entsprechendes Design inklusive grüner Retrokarte erhalten.

Ich hoffe, es gefällt.


Design by Max-Gerd Retzlaff <m.retzlaff@gmx.net>, 2009.

Space Invaders (including artwork) designed by Tomohiro Nishikado, released 1978.

Font "Dirty Headline" (Freeware) by S. John Ross / Cumberland Fontworks, http://www222.pair.com/sjohn/fonts.htm.

Thank you to both of you!

Earth

April 11, 2009, Literature

"Funny, funny word play! … I'd like to tell them, 'Look, madam, why the hell should we be interested in your damned world? We don't want to be hanging on the outside of any planet and waiting to fall off or get blown off. We don't want raw air puffing at us and dirty water falling on us. We don't want your damned germs and your smelly grass and your dull blue sky and your dull white clouds. We can see Earth in our own sky when we want to, and we don't often want to. The Moon is our home and it's what we make it; exactly what we make it. We own it and we build our own ecology, and we don't need you here being sorry for us going our own way. Go back to your own world and let your gravity pull your breasts down to your knees.' That's when I'd say."

Isaac Asimov, The Gods themselves, 1972, pp. 233/234.

Nice and well written book. Physics, science fiction, sex education / facts of life, emancipation of women. Really a book of the seventies!

Thanks, Johann, for the recommendation and for lending it to me!




The English Wikipedia mentions an interesting comment by Isaac Asimov concerning the middle section of the book:

Asimov was also criticized for the general absence of sexuality and of extraterrestrial life in his science fiction. Asimov once explained that his reluctance to write about aliens came from an incident early in his career when Astounding's editor John Campbell rejected one of his early science fiction stories because the alien characters were portrayed as superior to the humans. He decided that, rather than write weak alien characters, he would not write about aliens at all. Nevertheless, in response to these criticisms he wrote The Gods Themselves, which contains aliens, sex, and alien sex. Asimov said that of all his writings, he was most proud of the middle section of The Gods Themselves, the part which deals with those themes.

Isaac Asimov, I, Asimov: A Memoir, 1994, New York: Doubleday, p. 250.

The English Wikipedia, the page on Isaac Asimov, section Criticisms, online, accessed April 11th, 2009.


The little excerpt you've already read would generally be enough for me but on the first page of the book there is such a nice and well selected section of a conversation that's actually taken from the second half of the first part of the book. In short words it depicts the main topic of the book. Here you go:

'Then why worry?'

'Because, sir, upon the strength of the strong nuclear interaction rests the rate at which hydrogen fuses to helium in the core of the Sun. If the interaction strengthens even unnoticeably, the rate of hydrogen fusion in the sun will increase markedly. The Sun maintains the balance between radiation and gravitation with great delicacy and to upset that balance in favour of radiation, as we are now doing—'

'Yes?'

'—will cause an enormous explosion. Under our laws of nature, it is impossible for a star as small as the Sun to become a supernova. Under the altered laws, it may not be. I doubt that we would have warning. The Sun would build up to a vast explosion and in eight minutes after that you and I will be dead and the Earth will quickly vaporize into an expanding puff of vapor.'

pp. 1 & 56.

:-(

April 11, 2009, Miscellaneous

gestauchter Rahmen; click for a larger version  (277 kB).

Allerdings ist es wohl besser, daß der Rahmen den Großteil der kinetische Energie aufgenommen hat, und nicht ich… Erstaunlich nur, daß das Vorderrad noch völlig intakt ist und nicht etwa eine Acht.

Older entries...

Select a Theme:

Basilique du Sacré-Cœur de Montmartre (Paris) Parc Floral de Paris Castillo de Santa Barbara (Alicante) About the photos

Entries: