<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3929871335041261812</id><updated>2025-12-14T04:18:49.168+01:00</updated><title type='text'>Miniature Giant Space Hamster</title><subtitle type='html'>A blog about some smaller projects I&#39;ve done</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://miniaturegiantspacehamster.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alessio</name><uri>http://www.blogger.com/profile/11164549943359354730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3929871335041261812.post-8624653774932751912</id><published>2012-10-23T10:13:00.000+02:00</published><updated>2012-10-23T10:13:05.790+02:00</updated><title type='text'>DIY Lamp</title><content type='html'>Earlier this year we found this lamp that we really liked in a shopping center. Problem was nobody had an idea where to get it.

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDqFCzjW0yJLPv8FpTzZG6Kp49KFi2MaC8PuCX5NmzVuoloqWEbZ1k4fgZbSq1SFxeKFxYFul_V75mRFWhpeZl3LtropmRgN8Xe-narYri7uisvNf1ZQAUQIpIvkVoT3fO9Ys21VwWv0Q/s1600/2012-01-30+17.28.05.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDqFCzjW0yJLPv8FpTzZG6Kp49KFi2MaC8PuCX5NmzVuoloqWEbZ1k4fgZbSq1SFxeKFxYFul_V75mRFWhpeZl3LtropmRgN8Xe-narYri7uisvNf1ZQAUQIpIvkVoT3fO9Ys21VwWv0Q/s320/2012-01-30+17.28.05.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

Having access to the &lt;a href=&quot;http://happylab.at&quot;&gt;HappyLap&lt;/a&gt; Lasercutter we decided to just make it our self.

A quick &lt;a href=&quot;http://librecad.org/&quot;&gt;LibreCAD&lt;/a&gt; and &lt;a href=&quot;http://www.openscad.org/&quot;&gt;OpenSCAD&lt;/a&gt; session, 30€ in wood and 2 hours on the lasercutter later we had this:

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzVvSfaW2PQzzwisubJLceUEdzwQoJjskvquLA4NE1gxxot33QZLGFZ4rq6hEU38kddikgIf5-Oc5q7L0rRsoPZMfCMYo4HOHOToTtuit3gwngjefUjH-E1iwlqLY20u1oeZXKEhnI7FE/s1600/2012-09-23+17.04.37.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzVvSfaW2PQzzwisubJLceUEdzwQoJjskvquLA4NE1gxxot33QZLGFZ4rq6hEU38kddikgIf5-Oc5q7L0rRsoPZMfCMYo4HOHOToTtuit3gwngjefUjH-E1iwlqLY20u1oeZXKEhnI7FE/s320/2012-09-23+17.04.37.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

The lamp is made from 6 mm birch plywood and uses a lamp socket from &lt;a href=&quot;http://ikea.at&quot;&gt;IKEA&lt;/a&gt;.

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5nfANl81Bo-gfSV2r5daz93TaW1wsS5XjqBFRKpI7Te98Wedu32u_RlDYML_vmFAcWXB7yR2re0naMmPGpixeW9UIS-xCEyBUCwS5q7fAUZ6ZzrP7jfUH5SnLz0fxda43uz8hvpZppeI/s1600/2012-09-23+17.04.57.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5nfANl81Bo-gfSV2r5daz93TaW1wsS5XjqBFRKpI7Te98Wedu32u_RlDYML_vmFAcWXB7yR2re0naMmPGpixeW9UIS-xCEyBUCwS5q7fAUZ6ZzrP7jfUH5SnLz0fxda43uz8hvpZppeI/s320/2012-09-23+17.04.57.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

If you want the source files so that you can cut one your self just drop me a line and I&#39;ll send them to you.

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXOM5131z909IGgTyfZ6Mbt0N5F8BuAfHuiDF1u3YkKrBmbEsx6Y0Pb5mCk06bgU2Hz4q6JAyrguxrVGOxLKt_LHG_sbFvr5gXzDKR_QnGWzWpKz0i2qqITWe_r0ycsNOBo7NbIMOPy4M/s1600/librecad.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;288&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXOM5131z909IGgTyfZ6Mbt0N5F8BuAfHuiDF1u3YkKrBmbEsx6Y0Pb5mCk06bgU2Hz4q6JAyrguxrVGOxLKt_LHG_sbFvr5gXzDKR_QnGWzWpKz0i2qqITWe_r0ycsNOBo7NbIMOPy4M/s320/librecad.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

</content><link rel='replies' type='application/atom+xml' href='http://miniaturegiantspacehamster.blogspot.com/feeds/8624653774932751912/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/2012/10/diy-lamp.html#comment-form' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default/8624653774932751912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default/8624653774932751912'/><link rel='alternate' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/2012/10/diy-lamp.html' title='DIY Lamp'/><author><name>Alessio</name><uri>http://www.blogger.com/profile/11164549943359354730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDqFCzjW0yJLPv8FpTzZG6Kp49KFi2MaC8PuCX5NmzVuoloqWEbZ1k4fgZbSq1SFxeKFxYFul_V75mRFWhpeZl3LtropmRgN8Xe-narYri7uisvNf1ZQAUQIpIvkVoT3fO9Ys21VwWv0Q/s72-c/2012-01-30+17.28.05.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3929871335041261812.post-864044240464877749</id><published>2011-05-08T12:33:00.000+02:00</published><updated>2011-05-08T12:33:43.870+02:00</updated><title type='text'>Building a Word Clock - Part 2: Electronics</title><content type='html'>This is part two of my blog posts covering the build of a word clock. I will cover the electronic part of the clock in this post.&lt;br /&gt;
See &lt;a href=&quot;http://miniaturegiantspacehamster.blogspot.com/2011/03/building-word-clock-part-1-genetic.html&quot;&gt;part one&lt;/a&gt; for more details about the clock itself.&lt;br /&gt;
&lt;br /&gt;
The letters of the clock are back lit by a 10x10 RGB led matrix. I used 100 4 pin, 5mm common cathode RGB LEDs that I found on ebay.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnGoh9-oEeEdgc0rFfGhw62mn1Gi0_hZukhQeclmdciReVbs5j6d4RrEH5DsVS8q1_VTKVnvZse1iZSs6mDTvBghWFhb8YuXpEbYGDQiR4Ar6JVh7G-SZJMNk5o2LxI7Cy3Oa798OBNZ4/s1600/2010-11-02+19.35.20.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnGoh9-oEeEdgc0rFfGhw62mn1Gi0_hZukhQeclmdciReVbs5j6d4RrEH5DsVS8q1_VTKVnvZse1iZSs6mDTvBghWFhb8YuXpEbYGDQiR4Ar6JVh7G-SZJMNk5o2LxI7Cy3Oa798OBNZ4/s320/2010-11-02+19.35.20.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The anodes of the LEDs in one row and the cathodes of one column are connected all together. The result is a pretty straight forward LED matrix:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUtREmB8NnfmA4tPDK09TRzInVSM5rq5LtbtkE4Mv0OSFjA-uUp0SlaAUido1WVIEamcQ5B69A6kVYgoalTPzTMCJ-xH5FUOTV0IbtqGzexeVSbT2MYH9PzbiTXYy_hyh2R3n4v70eH2k/s1600/2010-11-06+16.21.15.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUtREmB8NnfmA4tPDK09TRzInVSM5rq5LtbtkE4Mv0OSFjA-uUp0SlaAUido1WVIEamcQ5B69A6kVYgoalTPzTMCJ-xH5FUOTV0IbtqGzexeVSbT2MYH9PzbiTXYy_hyh2R3n4v70eH2k/s320/2010-11-06+16.21.15.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
A short warning at this point: if you consider building one yourself be aware that there are 100 LEDs, each with 4 pins. That alone means you have to solder 400 pins  to each 2 wires. It is fun, but it is also quite a lot of work.&lt;br /&gt;
&lt;br /&gt;
Anyway, the driver board for the clock is also pretty straight forward:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyJ5K4tt2SNRoYdbjgAIlQSgcvhOC8P4I101szasBo-k833R2xDW2JbOV5ygeeSl92Yo5zUPcXf-VwhU8GrIysyviK-IFL0RrbNfnjVBM5lZf7q8DLFvZvxH_oaUtL3kHYjH-nnBX7Ls4/s1600/2011-02-08+22.25.24.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyJ5K4tt2SNRoYdbjgAIlQSgcvhOC8P4I101szasBo-k833R2xDW2JbOV5ygeeSl92Yo5zUPcXf-VwhU8GrIysyviK-IFL0RrbNfnjVBM5lZf7q8DLFvZvxH_oaUtL3kHYjH-nnBX7Ls4/s320/2011-02-08+22.25.24.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
On the bottom left there is an &lt;a href=&quot;http://arduino.cc/en/Main/ArduinoBoardNano&quot;&gt;Ardunino Nano&lt;/a&gt; that controls the clock (you&#39;ll find the source code at the bottom of the post)&lt;br /&gt;
&lt;br /&gt;
Timekeeping is done by a DS1307 breakout board (to the right of the Arduino) with battery backup. It&#39;s connected via I2C to the Arduino.&lt;br /&gt;
&lt;br /&gt;
Below the DS1307 are four push buttons for setting the time. They are all connected to one analog input pin of the Arduino. See &lt;a href=&quot;http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1226896251&quot;&gt;this forum post&lt;/a&gt; for how that is done.&lt;br /&gt;
&lt;br /&gt;
To the right of that you can see the 5V voltage regulator with a screw terminal.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;LED Matrix Driver&lt;/h2&gt;The top half of the driver board is for driving the LED matrix by scanning the columns of the matrix.&lt;br /&gt;
You can find a introduction to LED matrix drivers &lt;a href=&quot;http://www.mikrocontroller.net/articles/LED-Matrix&quot;&gt;here&lt;/a&gt; (&lt;a href=&quot;http://translate.google.com/translate?js=n&amp;prev=_t&amp;hl=de&amp;ie=UTF-8&amp;layout=2&amp;eotf=1&amp;sl=de&amp;tl=en&amp;u=http%3A%2F%2Fwww.mikrocontroller.net%2Farticles%2FLED-Matrix&quot;&gt;translated&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
There are 4 groups of 74HC595 shift registers. For a short introduction and some example code for working with shift registers see the Arduino &lt;a href=&quot;http://www.arduino.cc/en/Tutorial/ShiftOut&quot;&gt;ShiftOut - Documentation&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
You can chain two register with 8 output pins together and basically treat them as if they where one register with 16 output pins. &lt;br /&gt;
&lt;br /&gt;
The Arduino fills the shift registers with the pattern needed for the current time and than uses the &quot;Output-Enabled&quot; pin of the 74HC595 (which is tied to one of the PWM pins of the Arduino) to display the desired color.&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/tUkap21M48s?hl=de&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/tUkap21M48s?hl=de&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
You can see the 3 shift register groups for the red, green and blue channel and the one group for the common cathodes of the columns.&lt;br /&gt;
&lt;br /&gt;
The right most connector is for the four LEDs in the corners of the clock that display the current minute difference. E.g. if the clock says 10:20 and 2 LEDs are on it&#39;s actually 10:22.&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/sb8XWCUIgiI?hl=de&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/sb8XWCUIgiI?hl=de&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
Please note that the flickering of the LEDs is only visible in this video.&lt;br /&gt;
&lt;br /&gt;
You can find the source code for the German version of my word clock &lt;a href=&quot;https://docs.google.com/leaf?id=0B0dZed8PqSCmOTRhOGE3NGMtZGZjMy00MGEzLWFjM2UtMTc3MDJlYWJlYjU1&amp;hl=en&amp;authkey=CIeOuccP&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Parts of the code where generated by the programs presented in &lt;a href=&quot;http://miniaturegiantspacehamster.blogspot.com/2011/03/building-word-clock-part-1-genetic.html&quot;&gt;part one&lt;/a&gt; of this post.</content><link rel='replies' type='application/atom+xml' href='http://miniaturegiantspacehamster.blogspot.com/feeds/864044240464877749/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/2011/05/building-word-clock-part-2-electronics.html#comment-form' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default/864044240464877749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default/864044240464877749'/><link rel='alternate' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/2011/05/building-word-clock-part-2-electronics.html' title='Building a Word Clock - Part 2: Electronics'/><author><name>Alessio</name><uri>http://www.blogger.com/profile/11164549943359354730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnGoh9-oEeEdgc0rFfGhw62mn1Gi0_hZukhQeclmdciReVbs5j6d4RrEH5DsVS8q1_VTKVnvZse1iZSs6mDTvBghWFhb8YuXpEbYGDQiR4Ar6JVh7G-SZJMNk5o2LxI7Cy3Oa798OBNZ4/s72-c/2010-11-02+19.35.20.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3929871335041261812.post-8265437591045402126</id><published>2011-05-01T21:17:00.000+02:00</published><updated>2011-05-01T21:17:08.610+02:00</updated><title type='text'>There, I Fixed It</title><content type='html'>...well I hope that this post doesn&#39;t get listed &lt;a href=&quot;http://thereifixedit.failblog.org/&quot;&gt;here&lt;/a&gt; ;)&lt;br /&gt;
&lt;br /&gt;
Anyway, I fixed two things today:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Door Handle&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The door handle of my garden door was broken&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcROTlyy25ArE96i7jRGrHD0SgnvFy2uZD_n_tr8q7sLLeEIw66_6JsNIO3EAKJFM75oMBOPTDs4FKQ9tsQxvVxmbxJswyQFFl0aHhkibFl9lT9JI5cjo50dWZUOKKcrSDCKpkjPvjKoc/s1600/P1070592.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcROTlyy25ArE96i7jRGrHD0SgnvFy2uZD_n_tr8q7sLLeEIw66_6JsNIO3EAKJFM75oMBOPTDs4FKQ9tsQxvVxmbxJswyQFFl0aHhkibFl9lT9JI5cjo50dWZUOKKcrSDCKpkjPvjKoc/s320/P1070592.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
so I designed on in &lt;a href=&quot;http://www.openscad.org/&quot;&gt;OpenSCAD&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt5NiZ8_j87vaBZSF42aSvWiDP-H7a9I41RP4F2u3xXJVX9vmAx0Z_nV4RqMbceAKXqF5PBZxERpLRjeX3MdtbRn3TNXER5m1JVyDFSPrOqtvVB0cYvWJopdYDjcAHX0QbvuClWIzrA1E/s1600/door_handle.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;223&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt5NiZ8_j87vaBZSF42aSvWiDP-H7a9I41RP4F2u3xXJVX9vmAx0Z_nV4RqMbceAKXqF5PBZxERpLRjeX3MdtbRn3TNXER5m1JVyDFSPrOqtvVB0cYvWJopdYDjcAHX0QbvuClWIzrA1E/s320/door_handle.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
and printed it on a &lt;a href=&quot;http://www.dimensionprinting.com/3d-printers/printing-productspecs768series.aspx&quot;&gt;Dimension BST 768&lt;/a&gt; 3D printer at the &lt;a href=&quot;http://www.happylab.at/&quot;&gt;Happy Lab&lt;/a&gt; here in Vienna.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDzds2yKzHnL01yVWu9nX-FMSJvGF-SJRSpHFtHIs2of2vmmOSvU5aa-AOLbO3_6_A4bQAHaMLBCh4r1PROO_sb7FlQN-JanIlQJ57erJn4myFrtl8xW2vs_KnztpUql2ajGDnL-3HqoY/s1600/P1070584.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDzds2yKzHnL01yVWu9nX-FMSJvGF-SJRSpHFtHIs2of2vmmOSvU5aa-AOLbO3_6_A4bQAHaMLBCh4r1PROO_sb7FlQN-JanIlQJ57erJn4myFrtl8xW2vs_KnztpUql2ajGDnL-3HqoY/s320/P1070584.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Well, I wouldn&#39;t call it pretty (actually it&#39;s pretty ugly if you ask me) but it works:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnXbWiXf_W_jbraKk9jJgwRYhCRJdk8oiCWvgQbNkj0Dc6DSflKC4m9kQ6fDc1i9M79QZAybz66XXcyRQgrPpJQXpKSaQ3jwK-bsbGmd-235053X2gerT-PleO3O9xjvIxg_ESacGfTso/s1600/P1070594.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnXbWiXf_W_jbraKk9jJgwRYhCRJdk8oiCWvgQbNkj0Dc6DSflKC4m9kQ6fDc1i9M79QZAybz66XXcyRQgrPpJQXpKSaQ3jwK-bsbGmd-235053X2gerT-PleO3O9xjvIxg_ESacGfTso/s320/P1070594.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
You can download all files from &lt;a href=&quot;http://www.thingiverse.com/thing:8197&quot;&gt;Thingiverse&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Bikini&lt;/b&gt;&lt;br /&gt;
The next thing was the buckle of a bikini of my girlfriend. I designed a replacement in &lt;a href=&quot;http://www.qcad.org/&quot;&gt;QCAD&lt;/a&gt; and used the CO2 laser cutter of the happy lab to cut it out:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHzf4TcBE4ieOK5kINdMMwv0a6Sy9LXEPTw1CR4lv0gU6TbRk6_AQdzHngjZ7gFFgN7pmeVEfGv3zQ31UiQdO5etVWBzdaP1dgsgEuWzDWTlp7SjJQ0nuRY6fkvJIDlCNkgP9jF5Slsg/s1600/P1070589.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHzf4TcBE4ieOK5kINdMMwv0a6Sy9LXEPTw1CR4lv0gU6TbRk6_AQdzHngjZ7gFFgN7pmeVEfGv3zQ31UiQdO5etVWBzdaP1dgsgEuWzDWTlp7SjJQ0nuRY6fkvJIDlCNkgP9jF5Slsg/s320/P1070589.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
so there I fixed it ;)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilqlFOzmPWBI7pB7NQ2BydkvdreVvCD7uF5cMqhBCB_pwNY8JpGrtcIgGwrfnnV0WELIr9JY5MZ12lIFVO07M78Ves0wnpT0svieHJNNDdLqMfQIAoHoEGoyZuBSIxiMPzLpVPJv33TRk/s1600/bikini_crop.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;218&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilqlFOzmPWBI7pB7NQ2BydkvdreVvCD7uF5cMqhBCB_pwNY8JpGrtcIgGwrfnnV0WELIr9JY5MZ12lIFVO07M78Ves0wnpT0svieHJNNDdLqMfQIAoHoEGoyZuBSIxiMPzLpVPJv33TRk/s320/bikini_crop.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The design files can be downloaded from &lt;a href=&quot;http://www.thingiverse.com/thing:8198&quot;&gt;Thingiverse&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I think it&#39;s kind of funny when you use multi thousand € equipment in order to fix the most simple stuff, but hey, why no?</content><link rel='replies' type='application/atom+xml' href='http://miniaturegiantspacehamster.blogspot.com/feeds/8265437591045402126/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/2011/05/there-i-fixed-it.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default/8265437591045402126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default/8265437591045402126'/><link rel='alternate' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/2011/05/there-i-fixed-it.html' title='There, I Fixed It'/><author><name>Alessio</name><uri>http://www.blogger.com/profile/11164549943359354730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcROTlyy25ArE96i7jRGrHD0SgnvFy2uZD_n_tr8q7sLLeEIw66_6JsNIO3EAKJFM75oMBOPTDs4FKQ9tsQxvVxmbxJswyQFFl0aHhkibFl9lT9JI5cjo50dWZUOKKcrSDCKpkjPvjKoc/s72-c/P1070592.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3929871335041261812.post-4560341182956221227</id><published>2011-03-09T22:02:00.006+01:00</published><updated>2012-04-12T09:55:22.393+02:00</updated><title type='text'>Building a Word Clock - Part 1: Genetic Algorithms</title><content type='html'>&lt;b&gt;UPDATE: &lt;/b&gt;&lt;a href=&quot;http://miniaturegiantspacehamster.blogspot.com/2011/05/building-word-clock-part-2-electronics.html&quot;&gt;part two&lt;/a&gt;&lt;p&gt;
&lt;b&gt;UPDATE 11-APR-2012:&lt;/b&gt; removed typos (fourty -&gt; forty), changed the :05 times to &quot;o five&quot; (thanks Thopter and Andrew from &lt;a href=&quot;http://hackaday.com/2012/04/10/building-a-word-clock-with-genetic-algorithms/&quot;&gt;Hack-A-Day&lt;/a&gt;) and added a German circular clock.&lt;p&gt;
&lt;b&gt;UPDATE 12-APR-2012:&lt;/b&gt; put the code on &lt;a href=&quot;https://github.com/AlessioM/TimePiece&quot;&gt;github&lt;/a&gt; and added an english 10x10 clock.

&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/themes/ui-darkness/jquery-ui.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; /&gt;

&lt;style type=&quot;text/css&quot;&gt;


pre.monospace {
 font-size: 8pt;
}

pre.monospace b {
 color: red;
}

div.clock{
 margin: 1em;
 padding: 1em;
 display: block;
}

#rec_tabs div.clock {
 text-align: center;
}


div.clockWords {
 text-align: center;
}

button.prev, button.next {
 padding: 0.2em 1em;
 border: 1px solid black;
 background: white;
} 

.highlight {
 color: red;  
}

.background {
 color: #DDD;
}

.highlight, .background {
 font-family: Andale Mono, monospace;
 text-transform: uppercase;
 font-size: 15pt;
 letter-spacing: 0.6em; 
 font-weight: bold;
}
&lt;/style&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function() {
 

var regex_ger = new Array(
 /(.*)(ein)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(eins)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(eins)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(eins)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(eins)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(eins)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(zwei)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(zwei)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(zwei)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(zwei)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(zwei)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(zwei)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(zwei)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(zwei)(.*)/,
 /(.*)(ein)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(zwei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(zwei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(zwei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(zwei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(zwei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(zwei)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(drei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(drei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(drei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(drei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(drei)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(drei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(drei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(drei)(.*)/,
 /(.*)(zwei)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(drei)(.*)/,
 /(.*)(drei)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(drei)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(drei)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(drei)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(drei)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(drei)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(vier)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(vier)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(vier)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(vier)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(vier)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(vier)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(vier)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(vier)(.*)/,
 /(.*)(drei)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(vier)(.*)/,
 /(.*)(vier)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(vier)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(vier)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(vier)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(vier)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(vier)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(fUnf)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(fUnf)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(fUnf)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(fUnf)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(fUnf)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(fUnf)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(fUnf)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(fUnf)(.*)/,
 /(.*)(vier)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(fUnf)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(sechs)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(sechs)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(sechs)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(sechs)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(sechs)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(sechs)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(sechs)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(sechs)(.*)/,
 /(.*)(fUnf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(sechs)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(sechs)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(sechs)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(sechs)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(sechs)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(sechs)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(sieben)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(sieben)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(sieben)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(sieben)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(sieben)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(sieben)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(sieben)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(sieben)(.*)/,
 /(.*)(sechs)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(sieben)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(sieben)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(sieben)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(sieben)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(sieben)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(sieben)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(acht)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(acht)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(acht)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(acht)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(acht)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(acht)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(acht)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(acht)(.*)/,
 /(.*)(sieben)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(acht)(.*)/,
 /(.*)(acht)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(acht)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(acht)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(acht)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(acht)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(acht)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(neun)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(neun)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(neun)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(neun)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(neun)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(neun)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(neun)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(neun)(.*)/,
 /(.*)(acht)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(neun)(.*)/,
 /(.*)(neun)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(neun)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(neun)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(neun)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(neun)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(neun)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(zehn)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(zehn)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(zehn)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(zehn)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(zehn)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(zehn)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(zehn)(.*)/,
 /(.*)(neun)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(elf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(elf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(elf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(elf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(elf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(elf)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(zwOlf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(zwOlf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(zwOlf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(zwOlf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(zwOlf)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(zwOlf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(zwOlf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(zwOlf)(.*)/,
 /(.*)(elf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(zwOlf)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.*)/,
 /(.*)(punkt)(.+)(zwOlf)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(fUnf)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(zwOlf)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(zehn)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(zwOlf)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(fUnf)(.*)(zehn)(.*)/,
 /(.*)(viertel)(.+)(nach)(.+)(zwOlf)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(zwanzig)(.*)/,
 /(.*)(zwanzig)(.+)(nach)(.+)(zwOlf)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(halb)(.+)(eins)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(zwanzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(halb)(.+)(eins)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(dreissig)(.*)/,
 /(.*)(halb)(.+)(eins)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(dreissig)(.*)/,
 /(.*)(fUnf)(.+)(nach)(.+)(halb)(.+)(eins)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(vierzig)(.*)/,
 /(.*)(zwanzig)(.+)(vor)(.+)(eins)(.*)/,
 /(.*)(zehn)(.+)(nach)(.+)(halb)(.+)(eins)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(vierzig)(.*)/,
 /(.*)(drei)(.*)(viertel)(.+)(eins)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(fUnfzig)(.*)/,
 /(.*)(zehn)(.+)(vor)(.+)(eins)(.*)/,
 /(.*)(zwOlf)(.+)(uhr)(.+)(fUnf)(.*)(und)(.*)(fUnfzig)(.*)/,
 /(.*)(fUnf)(.+)(vor)(.+)(eins)(.*)/
);

var regex_eng = new Array(
 /(.*)(one)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(one)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(one)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(two)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(one)(.*)/,
 /(.*)(one)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(two)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(two)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(two)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(three)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(two)(.*)/,
 /(.*)(two)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(three)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(three)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(three)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(four)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(three)(.*)/,
 /(.*)(three)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(four)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(four)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(four)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(five)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(four)(.*)/,
 /(.*)(four)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(five)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(five)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(five)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(six)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(five)(.*)/,
 /(.*)(five)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(six)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(six)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(six)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(seven)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(six)(.*)/,
 /(.*)(six)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(seven)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(eight)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(seven)(.*)/,
 /(.*)(seven)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(eight)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(nine)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(eight)(.*)/,
 /(.*)(eight)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(nine)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(ten)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(nine)(.*)/,
 /(.*)(nine)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(ten)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(eleven)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(ten)(.*)/,
 /(.*)(ten)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(eleven)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(twelve)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(eleven)(.*)/,
 /(.*)(eleven)(.+)(fifty)(.*)(five)(.*)/,
 /(.*)(twelve)(.+)(o)(.+)(clock)(.*)/,
 /(.*)(five)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(o)(.+)(five)(.*)/,
 /(.*)(ten)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(ten)(.*)/,
 /(.*)(fifteen)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(fifteen)(.*)/,
 /(.*)(quarter)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twenty)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(twenty)(.*)/,
 /(.*)(twenty)(.*)(five)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(twenty)(.*)(five)(.*)/,
 /(.*)(thirty)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(thirty)(.*)/,
 /(.*)(half)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(thirty)(.*)(five)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(thirty)(.*)(five)(.*)/,
 /(.*)(forty)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(forty)(.*)/,
 /(.*)(forty)(.*)(five)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(forty)(.*)(five)(.*)/,
 /(.*)(quarter)(.+)(to)(.+)(one)(.*)/,
 /(.*)(fifty)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(fifty)(.*)/,
 /(.*)(fifty)(.*)(five)(.+)(past)(.+)(twelve)(.*)/,
 /(.*)(twelve)(.+)(fifty)(.*)(five)(.*)/
);

var styleClasses = new Array(&quot;highlight&quot;,&quot;background&quot;);

var index = 0;

function putClockHTML(currentIndex, deltaIndex, clockString, regexArray, clockElement) {
 var m = null;
 var index = currentIndex + deltaIndex;
 while(m == null &amp;&amp; index &gt;= 0 &amp;&amp; index &lt;= regexArray.length) {
  m = regexArray[index].exec(clockString);
  if(m != null) {
   var res = &quot;&quot;;
   for(i = 1; i &lt; m.length; i++) {
    var part = m[i];
    part = part.replace(/\|/g,&quot;&lt;br/&gt;&quot;);
    res += &quot;&lt;span class=&#39;&quot; + styleClasses[i % 2] + &quot;&#39;&gt;&quot; + part + &quot;&lt;/span&gt;&quot;;
   }

   clockElement.html(res);
   return index;
  }
  index += deltaIndex
 }
 return currentIndex;
}

function moveClockIndex(clock, delta) {
 var clockString = clock.attr(&#39;clock&#39;);
 var regexArray = eval(&quot;regex_&quot; + clock.attr(&#39;lang&#39;)); 
 clockIndizes[clockString] = putClockHTML(clockIndizes[clockString], delta, clockString, regexArray, $(clock).find(&#39;.clockWords&#39;));
}

var clockIndizes = new Array();

$(document).ready(function() {
 $(&#39;#next&#39;).click(function() {  
  index = putClockHTML(index, +1, clock, regex_engl, $(&#39;#clock&#39;));
 });

 $(&#39;#last&#39;).click(function() {  
  index = putClockHTML(index, -1, clock, regex_engl, $(&#39;#clock&#39;));
 });

 $(&#39;div.clock&#39;).each(function() {
  var clock = $(this).attr(&#39;clock&#39;);
  clockIndizes[clock] = 0;
  $(this).append(&quot;&lt;button class=&#39;prev&#39;&gt;&amp;lt; prev&lt;/button&gt;&quot;);
  $(this).append(&quot;&lt;button class=&#39;next&#39;&gt;next &amp;gt;&lt;/button&gt;&quot;);
  $(this).append(&quot;&lt;div class=&#39;clockWords&#39;&gt;&lt;/div&gt;&quot;);
  moveClockIndex($(this),0);
 });
 
 $(&#39;.prev&#39;).each(function() {
  $(this).click(function() {
   moveClockIndex($(this).parent(), -1);
  });
 });
 
 $(&#39;.next&#39;).each(function() {
  $(this).click(function() {
   moveClockIndex($(this).parent(), +1);
  });
 });  

 $(&#39;#rec_tabs&#39;).tabs();
 $(&#39;#regex&#39;).tabs();
});


});
&lt;/script&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpwFSMTVdQVpHne5kowJR_oAjWXuGenuGOgA-qQUHMi1XbHKx_48HaPheljAAki-LzxM44rJUtmCbbdE8ghkJhLd8buODtwOt4YVo19HmigCkqMfGo3_czKIXLkVyx3Uje8uF6v70O1s8/s1600/final_clock.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;313&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpwFSMTVdQVpHne5kowJR_oAjWXuGenuGOgA-qQUHMi1XbHKx_48HaPheljAAki-LzxM44rJUtmCbbdE8ghkJhLd8buODtwOt4YVo19HmigCkqMfGo3_czKIXLkVyx3Uje8uF6v70O1s8/s320/final_clock.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;


One day I came by a shop that sold this fancy &lt;a href=&quot;http://www.qlocktwo.com/&quot;&gt; QLOCKTWO&lt;/a&gt; word clock and decided that I want one of these. The only problem is that they cost around 1000€ - which is kind of a lot for a clock. The obvious solution? Build one yourself!

&lt;h2&gt;Other Word Clocks&lt;/h2&gt;
After a little bit of googling I found a couple of people that had already done that. 
&lt;p&gt;
&lt;a href=&quot;http://www.dougswordclock.com/&quot;&gt;[Doug Jackson]&lt;/a&gt; made one using a etched PCB as stencil for the letters and is even selling kits if you want to build one. 
He also posted the instructions for building one &lt;a href=&quot;http://www.instructables.com/id/A-Word-Clock/&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http:/
/hackaday.com/2009/09/27/word-clock-tell-the-time-with-words/&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://www.instructables.com/id/The-Word-Clock-Arduino-version/&quot;&gt;here&lt;/a&gt; .
&lt;p&gt;
A deriavate from [scottbez1]  can be found &lt;a href=&quot;http://www.instructables.com/id/Sleek-word-clock/&quot;&gt;here&lt;/a&gt; .
&lt;p&gt;
There is a Polish version of the clock from [miswierz] which can be found &lt;a href=&quot;http://www.elektroda.pl/rtvforum/viewtopic.php?t=1816132&amp;highlight=&quot;&gt;here&lt;/a&gt;
&lt;p&gt;
A guy called [Christian] build a German version of the word clock which you can find &lt;a href=&quot;http://christians-bastel-leben.blogspot.com/2011/02/qlocktwo-poster.html&quot;&gt;here&lt;/a&gt;
&lt;/p&gt;

They all have one thing in common (beside having a lot of LEDs and a stencil that is): &lt;br&gt;
they use more or less the same word pattern for the clock - pretty much identical to the QLOCKTWO.

&lt;h2&gt;Make it different&lt;/h2&gt;
First of all I don&#39;t like to just copy other peoples work and second I wanted to find out if you can do that different.&lt;br&gt;
The idea is to write a &lt;a href=&quot;http://en.wikipedia.org/wiki/Genetic_algorithm&quot;&gt;genetic algorithm&lt;/a&gt; that actually computes a stencil for the word clock.

&lt;h3&gt;Theory&lt;/h3&gt;
Ok, I&#39;m going to keep this one short. I&#39;m not an expert in GA so feel free to correct me if some details are a little bit fuzzy or just plain wrong.

&lt;p /&gt;
I just wanted to really understand the GAs and decided to program it completely by myself. For a real problem you would of course use one of the many GA frameworks (&lt;a href=&quot;http://jgap.sourceforge.net/&quot;&gt;JGAP&lt;/a&gt; for example)
&lt;p /&gt;
A GA works on a so called population of candidates. Each candidate represents one possible solution to a given problem. The GA now tries to find a better candidate by modifying or combining candidates in the population.
&lt;p /&gt;
In order to be able to do that the GA needs something called a &lt;b&gt;fitness function&lt;/b&gt;. Basically this function evaluates how good of a solution for the problem the candidate is.
&lt;p /&gt;
The second thing a GA needs is a set of &lt;b&gt;operations&lt;/b&gt; that it can perform on the population in order to create new candidates. This could be the crossover (i.e. combination of two candidates) or the mutation (i.e. random changing of parts of a candidate).
&lt;p /&gt;
After the GA created a new candidate it calculate its fitness and decides if it keeps it (i.e. put it in the population) or not. By keeping the good and discarding the bad candidates the population evolves and we end up having better and better candidates. Sounds simple enough, lets try it!

&lt;h3&gt;GA applied to a word clock&lt;/h3&gt;
First we need to represent the word clock in a manner that we can work with it. I decided to go with the format 
&lt;pre class=&#39;monospace&#39;&gt;XXXXXXXXXX|XXXXXXXXXX|XXXXXXXXXX|XXXXXXXXXX|XXXXXXXXXX|XXXXXXXXXX|XXXXXXXXXX|XXXXXXXXXX|XXXXXXXXXX|XXXXXXXXXX&lt;/pre&gt;
with X being a random letter and | being a line break. The example above would be the 10x10 word clock
&lt;pre class=&#39;monospace&#39;&gt;
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
&lt;/pre&gt;

&lt;h4&gt;The fitness function&lt;/h4&gt;
So how good is the candidate above? Well obviously its a pretty bad one - it cant represent even a single time. And that&#39;s exactly our fitness function: out of all 144 possible times (12 hour clock with 5 minute interval) how many of them can we represent?&lt;p /&gt;

The candidate above can represent 0, the one below (for a 11x11 English word clock) can represent 159 out of 144
&lt;pre class=&#39;monospace&#39;&gt;elevenntsix|sevenfourty|twelvehotwo|eightoneten|threertnine|fivefifteen|twentypastl|fourthytenv|fiftythirty|clockfourty|gtwofiveten&lt;/pre&gt;
Why 159 out of 144? Well because some times can be written in multiple formats - e.g. 04:10 can be written as &quot;four ten&quot;
&lt;pre class=&#39;monospace&#39;&gt;elevenntsix|seven&lt;b&gt;FOUR&lt;/b&gt;ty|twelvehotwo|eightone&lt;b&gt;TEN&lt;/b&gt;|threertnine|fivefifteen|twentypastl|fourthytenv|fiftythirty|clockfourty|gtwofiveten&lt;/pre&gt;
or as &quot;ten past four&quot;
&lt;pre class=&#39;monospace&#39;&gt;elevenntsix|sevenfourty|twelvehotwo|eightone&lt;b&gt;TEN&lt;/b&gt;|threertnine|fivefifteen|twenty&lt;b&gt;PAST&lt;/b&gt;l|fourthytenv|fiftythirty|clockFOURty|gtwofiveten&lt;/pre&gt;
The actual algorithm (sources can be find below) uses &lt;a href=&quot;http://en.wikipedia.org/wiki/Regular_expression&quot;&gt;regular expressions&lt;/a&gt; to find out how many times can be represented. For the example above 04:10 would be either &lt;i&gt;.*four.+ten.*&lt;/i&gt; or &lt;i&gt;.*ten+*past+*four.*&lt;/i&gt;. If the regex matches the time can be represented, if not it can&#39;t.&lt;/p&gt;

By building a regex for every single time you can check if the clock can represent every time of the day. &lt;p /&gt;
You can find all regular expressions at the end of the post.

&lt;h4&gt;The operators&lt;/h4&gt;
I played around with a couple of operators but in the end the following two turned out to be the most useful:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Combination&lt;/b&gt;: just take two candidates from the population (prefer the good ones but sometimes also pick bad ones) and combine them together (e.g. take the first 10 characters for the first candidate and the rest from the second)&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Word Insertion&lt;/b&gt;: pick a random candidate and insert a random word at a random position - with the list of words being given by the times (e.g. &quot;four&quot;, &quot;ten&quot;, &quot;past&quot;, ...)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;The Results&lt;/h2&gt;
Well, the GA works, but sometimes it gets stuck in a local minimum and needs to be reset. But in the end it turned out to work quite well. I used it to generate the 10x10 German word clock that I actually build and to generate the 11x11 English version mentioned above.&lt;p /p&gt;

I don&#39;t exactly know why but it wasn&#39;t able to find any english word clock solution smaller than 11x11, maybe I messed things up somewhere.

Here is a small JavaScript version of the clock (it doesn&#39;t show the real time but you can play around with it)


&lt;h3&gt;German 10x10&lt;/h3&gt;
&lt;div class=&#39;clock&#39; lang=&#39;ger&#39; clock=&#39;fUnffzehnu|dreihnacht|vorelfhalb|uhrviertel|siebenacht|dreisechsz|neundzwOlf|zweinsluhr|elfUnfzehn|undvierzig&#39;&gt; &lt;/div&gt;

&lt;h3&gt;English 10x10&lt;/h3&gt;
&lt;div class=&#39;clock&#39; lang=&#39;eng&#39; clock=&#39;twelveight|eleveniner|fivetwoone|sixssevenn|threeyfour|tennthirty|rtentwenty|fifteennto|clockforty|fiftyfiveo&#39;&gt; &lt;/div&gt;

&lt;h3&gt;English 11x11&lt;/h3&gt;

&lt;div id=&quot;rec_tabs&quot;&gt;
 &lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#rec_tabs_1&quot;&gt;V1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#rec_tabs_2&quot;&gt;V2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#rec_tabs_3&quot;&gt;V3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#rec_tabs_4&quot;&gt;V4&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

&lt;div id=&quot;rec_tabs_1&quot;&gt;&lt;div class=&#39;clock&#39; lang=&#39;eng&#39; clock=&#39;nsevenfourc|felevenotwo|twelvefivev|teightenone|tninethreel|sixhalfifty|efortyypast|ofthirtyten|totwentysix|twclockfive|fifteentone&#39;&gt; &lt;/div&gt;&lt;/div&gt;
&lt;div id=&quot;rec_tabs_2&quot;&gt;&lt;div class=&#39;clock&#39; lang=&#39;eng&#39; clock=&#39;tenfivehalf|fifteenineo|pastftofour|oonefeighto|threelevena|pftwelvetwo|nisixeseven|twentyforty|ninethirtyy|tenififtyty|fiveclocken&#39;&gt; &lt;/div&gt;&lt;/div&gt;
&lt;div id=&quot;rec_tabs_3&quot;&gt;&lt;div class=&#39;clock&#39; lang=&#39;eng&#39; clock=&#39;eleventwoto|twelvetksix|fthreeonine|efiveoneten|eightsevenn|halfofourrn|twentyforty|fiftyclocko|thirtyfpast|oonetennine|fifteenfive&#39;&gt; &lt;/div&gt;&lt;/div&gt;
&lt;div id=&quot;rec_tabs_4&quot;&gt;&lt;div class=&#39;clock&#39; lang=&#39;eng&#39; clock=&#39;sixonenttwo|fortythreeo|elevenseven|nineeighten|tfourtwelve|fiftythirty|fifteenfive|pastssixten|gtwentyfour|twoneclocky|ofortyrfive&#39;&gt; &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Actually there is no reason why you couldn&#39;t build not rectangular clocks.
&lt;h3&gt;Why not build a circular clock?&lt;/h3&gt;
&lt;div class=&#39;clock&#39; lang=&#39;eng&#39; clock=&#39;vpfk|qstennhp|sevensixhtvg|qfourtnhatwo|gninethreeight|televennfteeto|fiftthirtyntysone|fivettwelvetfoury|twentyhalfthreerv|fiftyfclockfivetn|twenfortyfteen|elquthirtypast|nitenfifteen|yltfourfiver|ftwthree|tone|
&#39;&gt; &lt;/div&gt;
&lt;h3&gt;Or triangular?&lt;/h3&gt;
&lt;div class=&#39;clock&#39; lang=&#39;eng&#39; clock=&#39;tgitenthreeseven|sixheleveneight|fourtwonineone|fiftytotwenty|fortytthirty|cfifteentwo|fiveepasto|sotwelveo|fivesixi|nineone|oclock|afour|tenr|two|ey|n&#39;&gt; &lt;/div&gt;

&lt;h3&gt;Diamond shaped?&lt;/h3&gt;
&lt;div class=&#39;clock&#39; lang=&#39;eng&#39; clock=&#39;o|vs|one|nine|three|fourpx|ttwelve|sixseven|ftwoofive|elelevenyf|oheightenoe|fortyfifty|thirtyneo|twentyfk|fifteen|lclock|fivee|onel|ten|li|v&#39;&gt; &lt;/div&gt;


&lt;h3&gt;Circular clock in German&lt;/h3&gt;
&lt;div class=&#39;clock&#39; lang=&#39;ger&#39; clock=&#39;fUnf|wzwanzig|pelfnktzehns|achfzweivors|tadreissiachti|venachalhalbOu|lnaUviertelrsechs|fUuhrvienachpunkt|zwOlfigachthsneun|siebenieheinsorwn|vacfUnfzigundU|uhrrtelvierzig|kszweizehnUi|elfUnfchvier|dreissig|halb&#39;&gt; &lt;/div&gt;

&lt;h2&gt;The Code&lt;/h2&gt;

&lt;div id=&quot;regex&quot;&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;a href=&quot;#regex_none&quot;&gt;RegEx&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#regex_english&quot;&gt;English RegEx&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#regex_german&quot;&gt;German RegEx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div id=&quot;regex_none&quot;&gt;
This are the regular expressions for English and German word clocks.
&lt;/div&gt;

&lt;div id=&quot;regex_english&quot;&gt;
&lt;pre&gt;
01:00 : (.*)(one)(.+)(o)(.+)(clock)(.*)
01:05 : (.*)(five)(.+)(past)(.+)(one)(.*)
01:05 : (.*)(one)(.+)(o)(.+)(five)(.*)
01:10 : (.*)(ten)(.+)(past)(.+)(one)(.*)
01:10 : (.*)(one)(.+)(ten)(.*)
01:15 : (.*)(fifteen)(.+)(past)(.+)(one)(.*)
01:15 : (.*)(one)(.+)(fifteen)(.*)
01:15 : (.*)(quarter)(.+)(past)(.+)(one)(.*)
01:20 : (.*)(twenty)(.+)(past)(.+)(one)(.*)
01:20 : (.*)(one)(.+)(twenty)(.*)
01:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(one)(.*)
01:25 : (.*)(one)(.+)(twenty)(.*)(five)(.*)
01:30 : (.*)(thirty)(.+)(past)(.+)(one)(.*)
01:30 : (.*)(one)(.+)(thirty)(.*)
01:30 : (.*)(half)(.+)(past)(.+)(one)(.*)
01:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(one)(.*)
01:35 : (.*)(one)(.+)(thirty)(.*)(five)(.*)
01:40 : (.*)(forty)(.+)(past)(.+)(one)(.*)
01:40 : (.*)(one)(.+)(forty)(.*)
01:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(one)(.*)
01:45 : (.*)(one)(.+)(forty)(.*)(five)(.*)
01:45 : (.*)(quarter)(.+)(to)(.+)(two)(.*)
01:50 : (.*)(fifty)(.+)(past)(.+)(one)(.*)
01:50 : (.*)(one)(.+)(fifty)(.*)
01:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(one)(.*)
01:55 : (.*)(one)(.+)(fifty)(.*)(five)(.*)
02:00 : (.*)(two)(.+)(o)(.+)(clock)(.*)
02:05 : (.*)(five)(.+)(past)(.+)(two)(.*)
02:05 : (.*)(two)(.+)(o)(.+)(five)(.*)
02:10 : (.*)(ten)(.+)(past)(.+)(two)(.*)
02:10 : (.*)(two)(.+)(ten)(.*)
02:15 : (.*)(fifteen)(.+)(past)(.+)(two)(.*)
02:15 : (.*)(two)(.+)(fifteen)(.*)
02:15 : (.*)(quarter)(.+)(past)(.+)(two)(.*)
02:20 : (.*)(twenty)(.+)(past)(.+)(two)(.*)
02:20 : (.*)(two)(.+)(twenty)(.*)
02:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(two)(.*)
02:25 : (.*)(two)(.+)(twenty)(.*)(five)(.*)
02:30 : (.*)(thirty)(.+)(past)(.+)(two)(.*)
02:30 : (.*)(two)(.+)(thirty)(.*)
02:30 : (.*)(half)(.+)(past)(.+)(two)(.*)
02:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(two)(.*)
02:35 : (.*)(two)(.+)(thirty)(.*)(five)(.*)
02:40 : (.*)(forty)(.+)(past)(.+)(two)(.*)
02:40 : (.*)(two)(.+)(forty)(.*)
02:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(two)(.*)
02:45 : (.*)(two)(.+)(forty)(.*)(five)(.*)
02:45 : (.*)(quarter)(.+)(to)(.+)(three)(.*)
02:50 : (.*)(fifty)(.+)(past)(.+)(two)(.*)
02:50 : (.*)(two)(.+)(fifty)(.*)
02:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(two)(.*)
02:55 : (.*)(two)(.+)(fifty)(.*)(five)(.*)
03:00 : (.*)(three)(.+)(o)(.+)(clock)(.*)
03:05 : (.*)(five)(.+)(past)(.+)(three)(.*)
03:05 : (.*)(three)(.+)(o)(.+)(five)(.*)
03:10 : (.*)(ten)(.+)(past)(.+)(three)(.*)
03:10 : (.*)(three)(.+)(ten)(.*)
03:15 : (.*)(fifteen)(.+)(past)(.+)(three)(.*)
03:15 : (.*)(three)(.+)(fifteen)(.*)
03:15 : (.*)(quarter)(.+)(past)(.+)(three)(.*)
03:20 : (.*)(twenty)(.+)(past)(.+)(three)(.*)
03:20 : (.*)(three)(.+)(twenty)(.*)
03:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(three)(.*)
03:25 : (.*)(three)(.+)(twenty)(.*)(five)(.*)
03:30 : (.*)(thirty)(.+)(past)(.+)(three)(.*)
03:30 : (.*)(three)(.+)(thirty)(.*)
03:30 : (.*)(half)(.+)(past)(.+)(three)(.*)
03:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(three)(.*)
03:35 : (.*)(three)(.+)(thirty)(.*)(five)(.*)
03:40 : (.*)(forty)(.+)(past)(.+)(three)(.*)
03:40 : (.*)(three)(.+)(forty)(.*)
03:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(three)(.*)
03:45 : (.*)(three)(.+)(forty)(.*)(five)(.*)
03:45 : (.*)(quarter)(.+)(to)(.+)(four)(.*)
03:50 : (.*)(fifty)(.+)(past)(.+)(three)(.*)
03:50 : (.*)(three)(.+)(fifty)(.*)
03:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(three)(.*)
03:55 : (.*)(three)(.+)(fifty)(.*)(five)(.*)
04:00 : (.*)(four)(.+)(o)(.+)(clock)(.*)
04:05 : (.*)(five)(.+)(past)(.+)(four)(.*)
04:05 : (.*)(four)(.+)(o)(.+)(five)(.*)
04:10 : (.*)(ten)(.+)(past)(.+)(four)(.*)
04:10 : (.*)(four)(.+)(ten)(.*)
04:15 : (.*)(fifteen)(.+)(past)(.+)(four)(.*)
04:15 : (.*)(four)(.+)(fifteen)(.*)
04:15 : (.*)(quarter)(.+)(past)(.+)(four)(.*)
04:20 : (.*)(twenty)(.+)(past)(.+)(four)(.*)
04:20 : (.*)(four)(.+)(twenty)(.*)
04:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(four)(.*)
04:25 : (.*)(four)(.+)(twenty)(.*)(five)(.*)
04:30 : (.*)(thirty)(.+)(past)(.+)(four)(.*)
04:30 : (.*)(four)(.+)(thirty)(.*)
04:30 : (.*)(half)(.+)(past)(.+)(four)(.*)
04:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(four)(.*)
04:35 : (.*)(four)(.+)(thirty)(.*)(five)(.*)
04:40 : (.*)(forty)(.+)(past)(.+)(four)(.*)
04:40 : (.*)(four)(.+)(forty)(.*)
04:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(four)(.*)
04:45 : (.*)(four)(.+)(forty)(.*)(five)(.*)
04:45 : (.*)(quarter)(.+)(to)(.+)(five)(.*)
04:50 : (.*)(fifty)(.+)(past)(.+)(four)(.*)
04:50 : (.*)(four)(.+)(fifty)(.*)
04:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(four)(.*)
04:55 : (.*)(four)(.+)(fifty)(.*)(five)(.*)
05:00 : (.*)(five)(.+)(o)(.+)(clock)(.*)
05:05 : (.*)(five)(.+)(past)(.+)(five)(.*)
05:05 : (.*)(five)(.+)(o)(.+)(five)(.*)
05:10 : (.*)(ten)(.+)(past)(.+)(five)(.*)
05:10 : (.*)(five)(.+)(ten)(.*)
05:15 : (.*)(fifteen)(.+)(past)(.+)(five)(.*)
05:15 : (.*)(five)(.+)(fifteen)(.*)
05:15 : (.*)(quarter)(.+)(past)(.+)(five)(.*)
05:20 : (.*)(twenty)(.+)(past)(.+)(five)(.*)
05:20 : (.*)(five)(.+)(twenty)(.*)
05:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(five)(.*)
05:25 : (.*)(five)(.+)(twenty)(.*)(five)(.*)
05:30 : (.*)(thirty)(.+)(past)(.+)(five)(.*)
05:30 : (.*)(five)(.+)(thirty)(.*)
05:30 : (.*)(half)(.+)(past)(.+)(five)(.*)
05:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(five)(.*)
05:35 : (.*)(five)(.+)(thirty)(.*)(five)(.*)
05:40 : (.*)(forty)(.+)(past)(.+)(five)(.*)
05:40 : (.*)(five)(.+)(forty)(.*)
05:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(five)(.*)
05:45 : (.*)(five)(.+)(forty)(.*)(five)(.*)
05:45 : (.*)(quarter)(.+)(to)(.+)(six)(.*)
05:50 : (.*)(fifty)(.+)(past)(.+)(five)(.*)
05:50 : (.*)(five)(.+)(fifty)(.*)
05:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(five)(.*)
05:55 : (.*)(five)(.+)(fifty)(.*)(five)(.*)
06:00 : (.*)(six)(.+)(o)(.+)(clock)(.*)
06:05 : (.*)(five)(.+)(past)(.+)(six)(.*)
06:05 : (.*)(six)(.+)(o)(.+)(five)(.*)
06:10 : (.*)(ten)(.+)(past)(.+)(six)(.*)
06:10 : (.*)(six)(.+)(ten)(.*)
06:15 : (.*)(fifteen)(.+)(past)(.+)(six)(.*)
06:15 : (.*)(six)(.+)(fifteen)(.*)
06:15 : (.*)(quarter)(.+)(past)(.+)(six)(.*)
06:20 : (.*)(twenty)(.+)(past)(.+)(six)(.*)
06:20 : (.*)(six)(.+)(twenty)(.*)
06:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(six)(.*)
06:25 : (.*)(six)(.+)(twenty)(.*)(five)(.*)
06:30 : (.*)(thirty)(.+)(past)(.+)(six)(.*)
06:30 : (.*)(six)(.+)(thirty)(.*)
06:30 : (.*)(half)(.+)(past)(.+)(six)(.*)
06:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(six)(.*)
06:35 : (.*)(six)(.+)(thirty)(.*)(five)(.*)
06:40 : (.*)(forty)(.+)(past)(.+)(six)(.*)
06:40 : (.*)(six)(.+)(forty)(.*)
06:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(six)(.*)
06:45 : (.*)(six)(.+)(forty)(.*)(five)(.*)
06:45 : (.*)(quarter)(.+)(to)(.+)(seven)(.*)
06:50 : (.*)(fifty)(.+)(past)(.+)(six)(.*)
06:50 : (.*)(six)(.+)(fifty)(.*)
06:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(six)(.*)
06:55 : (.*)(six)(.+)(fifty)(.*)(five)(.*)
07:00 : (.*)(seven)(.+)(o)(.+)(clock)(.*)
07:05 : (.*)(five)(.+)(past)(.+)(seven)(.*)
07:05 : (.*)(seven)(.+)(o)(.+)(five)(.*)
07:10 : (.*)(ten)(.+)(past)(.+)(seven)(.*)
07:10 : (.*)(seven)(.+)(ten)(.*)
07:15 : (.*)(fifteen)(.+)(past)(.+)(seven)(.*)
07:15 : (.*)(seven)(.+)(fifteen)(.*)
07:15 : (.*)(quarter)(.+)(past)(.+)(seven)(.*)
07:20 : (.*)(twenty)(.+)(past)(.+)(seven)(.*)
07:20 : (.*)(seven)(.+)(twenty)(.*)
07:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(seven)(.*)
07:25 : (.*)(seven)(.+)(twenty)(.*)(five)(.*)
07:30 : (.*)(thirty)(.+)(past)(.+)(seven)(.*)
07:30 : (.*)(seven)(.+)(thirty)(.*)
07:30 : (.*)(half)(.+)(past)(.+)(seven)(.*)
07:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(seven)(.*)
07:35 : (.*)(seven)(.+)(thirty)(.*)(five)(.*)
07:40 : (.*)(forty)(.+)(past)(.+)(seven)(.*)
07:40 : (.*)(seven)(.+)(forty)(.*)
07:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(seven)(.*)
07:45 : (.*)(seven)(.+)(forty)(.*)(five)(.*)
07:45 : (.*)(quarter)(.+)(to)(.+)(eight)(.*)
07:50 : (.*)(fifty)(.+)(past)(.+)(seven)(.*)
07:50 : (.*)(seven)(.+)(fifty)(.*)
07:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(seven)(.*)
07:55 : (.*)(seven)(.+)(fifty)(.*)(five)(.*)
08:00 : (.*)(eight)(.+)(o)(.+)(clock)(.*)
08:05 : (.*)(five)(.+)(past)(.+)(eight)(.*)
08:05 : (.*)(eight)(.+)(o)(.+)(five)(.*)
08:10 : (.*)(ten)(.+)(past)(.+)(eight)(.*)
08:10 : (.*)(eight)(.+)(ten)(.*)
08:15 : (.*)(fifteen)(.+)(past)(.+)(eight)(.*)
08:15 : (.*)(eight)(.+)(fifteen)(.*)
08:15 : (.*)(quarter)(.+)(past)(.+)(eight)(.*)
08:20 : (.*)(twenty)(.+)(past)(.+)(eight)(.*)
08:20 : (.*)(eight)(.+)(twenty)(.*)
08:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(eight)(.*)
08:25 : (.*)(eight)(.+)(twenty)(.*)(five)(.*)
08:30 : (.*)(thirty)(.+)(past)(.+)(eight)(.*)
08:30 : (.*)(eight)(.+)(thirty)(.*)
08:30 : (.*)(half)(.+)(past)(.+)(eight)(.*)
08:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(eight)(.*)
08:35 : (.*)(eight)(.+)(thirty)(.*)(five)(.*)
08:40 : (.*)(forty)(.+)(past)(.+)(eight)(.*)
08:40 : (.*)(eight)(.+)(forty)(.*)
08:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(eight)(.*)
08:45 : (.*)(eight)(.+)(forty)(.*)(five)(.*)
08:45 : (.*)(quarter)(.+)(to)(.+)(nine)(.*)
08:50 : (.*)(fifty)(.+)(past)(.+)(eight)(.*)
08:50 : (.*)(eight)(.+)(fifty)(.*)
08:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(eight)(.*)
08:55 : (.*)(eight)(.+)(fifty)(.*)(five)(.*)
09:00 : (.*)(nine)(.+)(o)(.+)(clock)(.*)
09:05 : (.*)(five)(.+)(past)(.+)(nine)(.*)
09:05 : (.*)(nine)(.+)(o)(.+)(five)(.*)
09:10 : (.*)(ten)(.+)(past)(.+)(nine)(.*)
09:10 : (.*)(nine)(.+)(ten)(.*)
09:15 : (.*)(fifteen)(.+)(past)(.+)(nine)(.*)
09:15 : (.*)(nine)(.+)(fifteen)(.*)
09:15 : (.*)(quarter)(.+)(past)(.+)(nine)(.*)
09:20 : (.*)(twenty)(.+)(past)(.+)(nine)(.*)
09:20 : (.*)(nine)(.+)(twenty)(.*)
09:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(nine)(.*)
09:25 : (.*)(nine)(.+)(twenty)(.*)(five)(.*)
09:30 : (.*)(thirty)(.+)(past)(.+)(nine)(.*)
09:30 : (.*)(nine)(.+)(thirty)(.*)
09:30 : (.*)(half)(.+)(past)(.+)(nine)(.*)
09:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(nine)(.*)
09:35 : (.*)(nine)(.+)(thirty)(.*)(five)(.*)
09:40 : (.*)(forty)(.+)(past)(.+)(nine)(.*)
09:40 : (.*)(nine)(.+)(forty)(.*)
09:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(nine)(.*)
09:45 : (.*)(nine)(.+)(forty)(.*)(five)(.*)
09:45 : (.*)(quarter)(.+)(to)(.+)(ten)(.*)
09:50 : (.*)(fifty)(.+)(past)(.+)(nine)(.*)
09:50 : (.*)(nine)(.+)(fifty)(.*)
09:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(nine)(.*)
09:55 : (.*)(nine)(.+)(fifty)(.*)(five)(.*)
10:00 : (.*)(ten)(.+)(o)(.+)(clock)(.*)
10:05 : (.*)(five)(.+)(past)(.+)(ten)(.*)
10:05 : (.*)(ten)(.+)(o)(.+)(five)(.*)
10:10 : (.*)(ten)(.+)(past)(.+)(ten)(.*)
10:10 : (.*)(ten)(.+)(ten)(.*)
10:15 : (.*)(fifteen)(.+)(past)(.+)(ten)(.*)
10:15 : (.*)(ten)(.+)(fifteen)(.*)
10:15 : (.*)(quarter)(.+)(past)(.+)(ten)(.*)
10:20 : (.*)(twenty)(.+)(past)(.+)(ten)(.*)
10:20 : (.*)(ten)(.+)(twenty)(.*)
10:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(ten)(.*)
10:25 : (.*)(ten)(.+)(twenty)(.*)(five)(.*)
10:30 : (.*)(thirty)(.+)(past)(.+)(ten)(.*)
10:30 : (.*)(ten)(.+)(thirty)(.*)
10:30 : (.*)(half)(.+)(past)(.+)(ten)(.*)
10:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(ten)(.*)
10:35 : (.*)(ten)(.+)(thirty)(.*)(five)(.*)
10:40 : (.*)(forty)(.+)(past)(.+)(ten)(.*)
10:40 : (.*)(ten)(.+)(forty)(.*)
10:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(ten)(.*)
10:45 : (.*)(ten)(.+)(forty)(.*)(five)(.*)
10:45 : (.*)(quarter)(.+)(to)(.+)(eleven)(.*)
10:50 : (.*)(fifty)(.+)(past)(.+)(ten)(.*)
10:50 : (.*)(ten)(.+)(fifty)(.*)
10:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(ten)(.*)
10:55 : (.*)(ten)(.+)(fifty)(.*)(five)(.*)
11:00 : (.*)(eleven)(.+)(o)(.+)(clock)(.*)
11:05 : (.*)(five)(.+)(past)(.+)(eleven)(.*)
11:05 : (.*)(eleven)(.+)(o)(.+)(five)(.*)
11:10 : (.*)(ten)(.+)(past)(.+)(eleven)(.*)
11:10 : (.*)(eleven)(.+)(ten)(.*)
11:15 : (.*)(fifteen)(.+)(past)(.+)(eleven)(.*)
11:15 : (.*)(eleven)(.+)(fifteen)(.*)
11:15 : (.*)(quarter)(.+)(past)(.+)(eleven)(.*)
11:20 : (.*)(twenty)(.+)(past)(.+)(eleven)(.*)
11:20 : (.*)(eleven)(.+)(twenty)(.*)
11:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(eleven)(.*)
11:25 : (.*)(eleven)(.+)(twenty)(.*)(five)(.*)
11:30 : (.*)(thirty)(.+)(past)(.+)(eleven)(.*)
11:30 : (.*)(eleven)(.+)(thirty)(.*)
11:30 : (.*)(half)(.+)(past)(.+)(eleven)(.*)
11:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(eleven)(.*)
11:35 : (.*)(eleven)(.+)(thirty)(.*)(five)(.*)
11:40 : (.*)(forty)(.+)(past)(.+)(eleven)(.*)
11:40 : (.*)(eleven)(.+)(forty)(.*)
11:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(eleven)(.*)
11:45 : (.*)(eleven)(.+)(forty)(.*)(five)(.*)
11:45 : (.*)(quarter)(.+)(to)(.+)(twelve)(.*)
11:50 : (.*)(fifty)(.+)(past)(.+)(eleven)(.*)
11:50 : (.*)(eleven)(.+)(fifty)(.*)
11:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(eleven)(.*)
11:55 : (.*)(eleven)(.+)(fifty)(.*)(five)(.*)
12:00 : (.*)(twelve)(.+)(o)(.+)(clock)(.*)
12:05 : (.*)(five)(.+)(past)(.+)(twelve)(.*)
12:05 : (.*)(twelve)(.+)(o)(.+)(five)(.*)
12:10 : (.*)(ten)(.+)(past)(.+)(twelve)(.*)
12:10 : (.*)(twelve)(.+)(ten)(.*)
12:15 : (.*)(fifteen)(.+)(past)(.+)(twelve)(.*)
12:15 : (.*)(twelve)(.+)(fifteen)(.*)
12:15 : (.*)(quarter)(.+)(past)(.+)(twelve)(.*)
12:20 : (.*)(twenty)(.+)(past)(.+)(twelve)(.*)
12:20 : (.*)(twelve)(.+)(twenty)(.*)
12:25 : (.*)(twenty)(.*)(five)(.+)(past)(.+)(twelve)(.*)
12:25 : (.*)(twelve)(.+)(twenty)(.*)(five)(.*)
12:30 : (.*)(thirty)(.+)(past)(.+)(twelve)(.*)
12:30 : (.*)(twelve)(.+)(thirty)(.*)
12:30 : (.*)(half)(.+)(past)(.+)(twelve)(.*)
12:35 : (.*)(thirty)(.*)(five)(.+)(past)(.+)(twelve)(.*)
12:35 : (.*)(twelve)(.+)(thirty)(.*)(five)(.*)
12:40 : (.*)(forty)(.+)(past)(.+)(twelve)(.*)
12:40 : (.*)(twelve)(.+)(forty)(.*)
12:45 : (.*)(forty)(.*)(five)(.+)(past)(.+)(twelve)(.*)
12:45 : (.*)(twelve)(.+)(forty)(.*)(five)(.*)
12:45 : (.*)(quarter)(.+)(to)(.+)(one)(.*)
12:50 : (.*)(fifty)(.+)(past)(.+)(twelve)(.*)
12:50 : (.*)(twelve)(.+)(fifty)(.*)
12:55 : (.*)(fifty)(.*)(five)(.+)(past)(.+)(twelve)(.*)
12:55 : (.*)(twelve)(.+)(fifty)(.*)(five)(.*)
&lt;/pre&gt;
&lt;/div&gt;

&lt;div id=&quot;regex_german&quot;&gt;
&lt;pre&gt;
 1:00 : (.*)(ein)(.+)(uhr)(.*)
 1:00 : (.*)(punkt)(.+)(eins)(.*)
 1:05 : (.*)(ein)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 1:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(eins)(.*)
 1:10 : (.*)(ein)(.+)(uhr)(.+)(zehn)(.*)
 1:10 : (.*)(zehn)(.+)(nach)(.+)(eins)(.*)
 1:15 : (.*)(ein)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 1:15 : (.*)(viertel)(.+)(nach)(.+)(eins)(.*)
 1:20 : (.*)(ein)(.+)(uhr)(.+)(zwanzig)(.*)
 1:20 : (.*)(zwanzig)(.+)(nach)(.+)(eins)(.*)
 1:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(zwei)(.*)
 1:25 : (.*)(ein)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 1:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(zwei)(.*)
 1:30 : (.*)(ein)(.+)(uhr)(.+)(dreissig)(.*)
 1:30 : (.*)(halb)(.+)(zwei)(.*)
 1:35 : (.*)(ein)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 1:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(zwei)(.*)
 1:40 : (.*)(ein)(.+)(uhr)(.+)(vierzig)(.*)
 1:40 : (.*)(zwanzig)(.+)(vor)(.+)(zwei)(.*)
 1:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(zwei)(.*)
 1:45 : (.*)(ein)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 1:45 : (.*)(drei)(.*)(viertel)(.+)(zwei)(.*)
 1:50 : (.*)(ein)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 1:50 : (.*)(zehn)(.+)(vor)(.+)(zwei)(.*)
 1:55 : (.*)(ein)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 1:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(zwei)(.*)
 2:00 : (.*)(zwei)(.+)(uhr)(.*)
 2:00 : (.*)(punkt)(.+)(zwei)(.*)
 2:05 : (.*)(zwei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 2:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(zwei)(.*)
 2:10 : (.*)(zwei)(.+)(uhr)(.+)(zehn)(.*)
 2:10 : (.*)(zehn)(.+)(nach)(.+)(zwei)(.*)
 2:15 : (.*)(zwei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 2:15 : (.*)(viertel)(.+)(nach)(.+)(zwei)(.*)
 2:20 : (.*)(zwei)(.+)(uhr)(.+)(zwanzig)(.*)
 2:20 : (.*)(zwanzig)(.+)(nach)(.+)(zwei)(.*)
 2:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(drei)(.*)
 2:25 : (.*)(zwei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 2:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(drei)(.*)
 2:30 : (.*)(zwei)(.+)(uhr)(.+)(dreissig)(.*)
 2:30 : (.*)(halb)(.+)(drei)(.*)
 2:35 : (.*)(zwei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 2:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(drei)(.*)
 2:40 : (.*)(zwei)(.+)(uhr)(.+)(vierzig)(.*)
 2:40 : (.*)(zwanzig)(.+)(vor)(.+)(drei)(.*)
 2:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(drei)(.*)
 2:45 : (.*)(zwei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 2:45 : (.*)(drei)(.*)(viertel)(.+)(drei)(.*)
 2:50 : (.*)(zwei)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 2:50 : (.*)(zehn)(.+)(vor)(.+)(drei)(.*)
 2:55 : (.*)(zwei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 2:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(drei)(.*)
 3:00 : (.*)(drei)(.+)(uhr)(.*)
 3:00 : (.*)(punkt)(.+)(drei)(.*)
 3:05 : (.*)(drei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 3:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(drei)(.*)
 3:10 : (.*)(drei)(.+)(uhr)(.+)(zehn)(.*)
 3:10 : (.*)(zehn)(.+)(nach)(.+)(drei)(.*)
 3:15 : (.*)(drei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 3:15 : (.*)(viertel)(.+)(nach)(.+)(drei)(.*)
 3:20 : (.*)(drei)(.+)(uhr)(.+)(zwanzig)(.*)
 3:20 : (.*)(zwanzig)(.+)(nach)(.+)(drei)(.*)
 3:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(vier)(.*)
 3:25 : (.*)(drei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 3:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(vier)(.*)
 3:30 : (.*)(drei)(.+)(uhr)(.+)(dreissig)(.*)
 3:30 : (.*)(halb)(.+)(vier)(.*)
 3:35 : (.*)(drei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 3:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(vier)(.*)
 3:40 : (.*)(drei)(.+)(uhr)(.+)(vierzig)(.*)
 3:40 : (.*)(zwanzig)(.+)(vor)(.+)(vier)(.*)
 3:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(vier)(.*)
 3:45 : (.*)(drei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 3:45 : (.*)(drei)(.*)(viertel)(.+)(vier)(.*)
 3:50 : (.*)(drei)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 3:50 : (.*)(zehn)(.+)(vor)(.+)(vier)(.*)
 3:55 : (.*)(drei)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 3:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(vier)(.*)
 4:00 : (.*)(vier)(.+)(uhr)(.*)
 4:00 : (.*)(punkt)(.+)(vier)(.*)
 4:05 : (.*)(vier)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 4:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(vier)(.*)
 4:10 : (.*)(vier)(.+)(uhr)(.+)(zehn)(.*)
 4:10 : (.*)(zehn)(.+)(nach)(.+)(vier)(.*)
 4:15 : (.*)(vier)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 4:15 : (.*)(viertel)(.+)(nach)(.+)(vier)(.*)
 4:20 : (.*)(vier)(.+)(uhr)(.+)(zwanzig)(.*)
 4:20 : (.*)(zwanzig)(.+)(nach)(.+)(vier)(.*)
 4:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(f&amp;uuml;nf)(.*)
 4:25 : (.*)(vier)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 4:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(f&amp;uuml;nf)(.*)
 4:30 : (.*)(vier)(.+)(uhr)(.+)(dreissig)(.*)
 4:30 : (.*)(halb)(.+)(f&amp;uuml;nf)(.*)
 4:35 : (.*)(vier)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 4:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(f&amp;uuml;nf)(.*)
 4:40 : (.*)(vier)(.+)(uhr)(.+)(vierzig)(.*)
 4:40 : (.*)(zwanzig)(.+)(vor)(.+)(f&amp;uuml;nf)(.*)
 4:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(f&amp;uuml;nf)(.*)
 4:45 : (.*)(vier)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 4:45 : (.*)(drei)(.*)(viertel)(.+)(f&amp;uuml;nf)(.*)
 4:50 : (.*)(vier)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 4:50 : (.*)(zehn)(.+)(vor)(.+)(f&amp;uuml;nf)(.*)
 4:55 : (.*)(vier)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 4:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(f&amp;uuml;nf)(.*)
 5:00 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.*)
 5:00 : (.*)(punkt)(.+)(f&amp;uuml;nf)(.*)
 5:05 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 5:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(f&amp;uuml;nf)(.*)
 5:10 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(zehn)(.*)
 5:10 : (.*)(zehn)(.+)(nach)(.+)(f&amp;uuml;nf)(.*)
 5:15 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 5:15 : (.*)(viertel)(.+)(nach)(.+)(f&amp;uuml;nf)(.*)
 5:20 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(zwanzig)(.*)
 5:20 : (.*)(zwanzig)(.+)(nach)(.+)(f&amp;uuml;nf)(.*)
 5:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(sechs)(.*)
 5:25 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 5:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(sechs)(.*)
 5:30 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(dreissig)(.*)
 5:30 : (.*)(halb)(.+)(sechs)(.*)
 5:35 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 5:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(sechs)(.*)
 5:40 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(vierzig)(.*)
 5:40 : (.*)(zwanzig)(.+)(vor)(.+)(sechs)(.*)
 5:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(sechs)(.*)
 5:45 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 5:45 : (.*)(drei)(.*)(viertel)(.+)(sechs)(.*)
 5:50 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 5:50 : (.*)(zehn)(.+)(vor)(.+)(sechs)(.*)
 5:55 : (.*)(f&amp;uuml;nf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 5:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(sechs)(.*)
 6:00 : (.*)(sechs)(.+)(uhr)(.*)
 6:00 : (.*)(punkt)(.+)(sechs)(.*)
 6:05 : (.*)(sechs)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 6:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(sechs)(.*)
 6:10 : (.*)(sechs)(.+)(uhr)(.+)(zehn)(.*)
 6:10 : (.*)(zehn)(.+)(nach)(.+)(sechs)(.*)
 6:15 : (.*)(sechs)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 6:15 : (.*)(viertel)(.+)(nach)(.+)(sechs)(.*)
 6:20 : (.*)(sechs)(.+)(uhr)(.+)(zwanzig)(.*)
 6:20 : (.*)(zwanzig)(.+)(nach)(.+)(sechs)(.*)
 6:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(sieben)(.*)
 6:25 : (.*)(sechs)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 6:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(sieben)(.*)
 6:30 : (.*)(sechs)(.+)(uhr)(.+)(dreissig)(.*)
 6:30 : (.*)(halb)(.+)(sieben)(.*)
 6:35 : (.*)(sechs)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 6:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(sieben)(.*)
 6:40 : (.*)(sechs)(.+)(uhr)(.+)(vierzig)(.*)
 6:40 : (.*)(zwanzig)(.+)(vor)(.+)(sieben)(.*)
 6:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(sieben)(.*)
 6:45 : (.*)(sechs)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 6:45 : (.*)(drei)(.*)(viertel)(.+)(sieben)(.*)
 6:50 : (.*)(sechs)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 6:50 : (.*)(zehn)(.+)(vor)(.+)(sieben)(.*)
 6:55 : (.*)(sechs)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 6:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(sieben)(.*)
 7:00 : (.*)(sieben)(.+)(uhr)(.*)
 7:00 : (.*)(punkt)(.+)(sieben)(.*)
 7:05 : (.*)(sieben)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 7:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(sieben)(.*)
 7:10 : (.*)(sieben)(.+)(uhr)(.+)(zehn)(.*)
 7:10 : (.*)(zehn)(.+)(nach)(.+)(sieben)(.*)
 7:15 : (.*)(sieben)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 7:15 : (.*)(viertel)(.+)(nach)(.+)(sieben)(.*)
 7:20 : (.*)(sieben)(.+)(uhr)(.+)(zwanzig)(.*)
 7:20 : (.*)(zwanzig)(.+)(nach)(.+)(sieben)(.*)
 7:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(acht)(.*)
 7:25 : (.*)(sieben)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 7:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(acht)(.*)
 7:30 : (.*)(sieben)(.+)(uhr)(.+)(dreissig)(.*)
 7:30 : (.*)(halb)(.+)(acht)(.*)
 7:35 : (.*)(sieben)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 7:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(acht)(.*)
 7:40 : (.*)(sieben)(.+)(uhr)(.+)(vierzig)(.*)
 7:40 : (.*)(zwanzig)(.+)(vor)(.+)(acht)(.*)
 7:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(acht)(.*)
 7:45 : (.*)(sieben)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 7:45 : (.*)(drei)(.*)(viertel)(.+)(acht)(.*)
 7:50 : (.*)(sieben)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 7:50 : (.*)(zehn)(.+)(vor)(.+)(acht)(.*)
 7:55 : (.*)(sieben)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 7:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(acht)(.*)
 8:00 : (.*)(acht)(.+)(uhr)(.*)
 8:00 : (.*)(punkt)(.+)(acht)(.*)
 8:05 : (.*)(acht)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 8:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(acht)(.*)
 8:10 : (.*)(acht)(.+)(uhr)(.+)(zehn)(.*)
 8:10 : (.*)(zehn)(.+)(nach)(.+)(acht)(.*)
 8:15 : (.*)(acht)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 8:15 : (.*)(viertel)(.+)(nach)(.+)(acht)(.*)
 8:20 : (.*)(acht)(.+)(uhr)(.+)(zwanzig)(.*)
 8:20 : (.*)(zwanzig)(.+)(nach)(.+)(acht)(.*)
 8:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(neun)(.*)
 8:25 : (.*)(acht)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 8:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(neun)(.*)
 8:30 : (.*)(acht)(.+)(uhr)(.+)(dreissig)(.*)
 8:30 : (.*)(halb)(.+)(neun)(.*)
 8:35 : (.*)(acht)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 8:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(neun)(.*)
 8:40 : (.*)(acht)(.+)(uhr)(.+)(vierzig)(.*)
 8:40 : (.*)(zwanzig)(.+)(vor)(.+)(neun)(.*)
 8:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(neun)(.*)
 8:45 : (.*)(acht)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 8:45 : (.*)(drei)(.*)(viertel)(.+)(neun)(.*)
 8:50 : (.*)(acht)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 8:50 : (.*)(zehn)(.+)(vor)(.+)(neun)(.*)
 8:55 : (.*)(acht)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 8:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(neun)(.*)
 9:00 : (.*)(neun)(.+)(uhr)(.*)
 9:00 : (.*)(punkt)(.+)(neun)(.*)
 9:05 : (.*)(neun)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
 9:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(neun)(.*)
 9:10 : (.*)(neun)(.+)(uhr)(.+)(zehn)(.*)
 9:10 : (.*)(zehn)(.+)(nach)(.+)(neun)(.*)
 9:15 : (.*)(neun)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
 9:15 : (.*)(viertel)(.+)(nach)(.+)(neun)(.*)
 9:20 : (.*)(neun)(.+)(uhr)(.+)(zwanzig)(.*)
 9:20 : (.*)(zwanzig)(.+)(nach)(.+)(neun)(.*)
 9:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(zehn)(.*)
 9:25 : (.*)(neun)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
 9:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(zehn)(.*)
 9:30 : (.*)(neun)(.+)(uhr)(.+)(dreissig)(.*)
 9:30 : (.*)(halb)(.+)(zehn)(.*)
 9:35 : (.*)(neun)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
 9:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(zehn)(.*)
 9:40 : (.*)(neun)(.+)(uhr)(.+)(vierzig)(.*)
 9:40 : (.*)(zwanzig)(.+)(vor)(.+)(zehn)(.*)
 9:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(zehn)(.*)
 9:45 : (.*)(neun)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
 9:45 : (.*)(drei)(.*)(viertel)(.+)(zehn)(.*)
 9:50 : (.*)(neun)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
 9:50 : (.*)(zehn)(.+)(vor)(.+)(zehn)(.*)
 9:55 : (.*)(neun)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
 9:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(zehn)(.*)
10:00 : (.*)(zehn)(.+)(uhr)(.*)
10:00 : (.*)(punkt)(.+)(zehn)(.*)
10:05 : (.*)(zehn)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
10:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(zehn)(.*)
10:10 : (.*)(zehn)(.+)(uhr)(.+)(zehn)(.*)
10:10 : (.*)(zehn)(.+)(nach)(.+)(zehn)(.*)
10:15 : (.*)(zehn)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
10:15 : (.*)(viertel)(.+)(nach)(.+)(zehn)(.*)
10:20 : (.*)(zehn)(.+)(uhr)(.+)(zwanzig)(.*)
10:20 : (.*)(zwanzig)(.+)(nach)(.+)(zehn)(.*)
10:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(elf)(.*)
10:25 : (.*)(zehn)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
10:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(elf)(.*)
10:30 : (.*)(zehn)(.+)(uhr)(.+)(dreissig)(.*)
10:30 : (.*)(halb)(.+)(elf)(.*)
10:35 : (.*)(zehn)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
10:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(elf)(.*)
10:40 : (.*)(zehn)(.+)(uhr)(.+)(vierzig)(.*)
10:40 : (.*)(zwanzig)(.+)(vor)(.+)(elf)(.*)
10:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(elf)(.*)
10:45 : (.*)(zehn)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
10:45 : (.*)(drei)(.*)(viertel)(.+)(elf)(.*)
10:50 : (.*)(zehn)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
10:50 : (.*)(zehn)(.+)(vor)(.+)(elf)(.*)
10:55 : (.*)(zehn)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
10:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(elf)(.*)
11:00 : (.*)(elf)(.+)(uhr)(.*)
11:00 : (.*)(punkt)(.+)(elf)(.*)
11:05 : (.*)(elf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
11:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(elf)(.*)
11:10 : (.*)(elf)(.+)(uhr)(.+)(zehn)(.*)
11:10 : (.*)(zehn)(.+)(nach)(.+)(elf)(.*)
11:15 : (.*)(elf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
11:15 : (.*)(viertel)(.+)(nach)(.+)(elf)(.*)
11:20 : (.*)(elf)(.+)(uhr)(.+)(zwanzig)(.*)
11:20 : (.*)(zwanzig)(.+)(nach)(.+)(elf)(.*)
11:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(zw&amp;ouml;lf)(.*)
11:25 : (.*)(elf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
11:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(zw&amp;ouml;lf)(.*)
11:30 : (.*)(elf)(.+)(uhr)(.+)(dreissig)(.*)
11:30 : (.*)(halb)(.+)(zw&amp;ouml;lf)(.*)
11:35 : (.*)(elf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
11:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(zw&amp;ouml;lf)(.*)
11:40 : (.*)(elf)(.+)(uhr)(.+)(vierzig)(.*)
11:40 : (.*)(zwanzig)(.+)(vor)(.+)(zw&amp;ouml;lf)(.*)
11:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(zw&amp;ouml;lf)(.*)
11:45 : (.*)(elf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
11:45 : (.*)(drei)(.*)(viertel)(.+)(zw&amp;ouml;lf)(.*)
11:50 : (.*)(elf)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
11:50 : (.*)(zehn)(.+)(vor)(.+)(zw&amp;ouml;lf)(.*)
11:55 : (.*)(elf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
11:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(zw&amp;ouml;lf)(.*)
12:00 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.*)
12:00 : (.*)(punkt)(.+)(zw&amp;ouml;lf)(.*)
12:05 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)
12:05 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(zw&amp;ouml;lf)(.*)
12:10 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(zehn)(.*)
12:10 : (.*)(zehn)(.+)(nach)(.+)(zw&amp;ouml;lf)(.*)
12:15 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(zehn)(.*)
12:15 : (.*)(viertel)(.+)(nach)(.+)(zw&amp;ouml;lf)(.*)
12:20 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(zwanzig)(.*)
12:20 : (.*)(zwanzig)(.+)(nach)(.+)(zw&amp;ouml;lf)(.*)
12:20 : (.*)(zehn)(.+)(vor)(.+)(halb)(.+)(eins)(.*)
12:25 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(zwanzig)(.*)
12:25 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(halb)(.+)(eins)(.*)
12:30 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(dreissig)(.*)
12:30 : (.*)(halb)(.+)(eins)(.*)
12:35 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(dreissig)(.*)
12:35 : (.*)(f&amp;uuml;nf)(.+)(nach)(.+)(halb)(.+)(eins)(.*)
12:40 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(vierzig)(.*)
12:40 : (.*)(zwanzig)(.+)(vor)(.+)(eins)(.*)
12:40 : (.*)(zehn)(.+)(nach)(.+)(halb)(.+)(eins)(.*)
12:45 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(vierzig)(.*)
12:45 : (.*)(drei)(.*)(viertel)(.+)(eins)(.*)
12:50 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(f&amp;uuml;nfzig)(.*)
12:50 : (.*)(zehn)(.+)(vor)(.+)(eins)(.*)
12:55 : (.*)(zw&amp;ouml;lf)(.+)(uhr)(.+)(f&amp;uuml;nf)(.*)(und)(.*)(f&amp;uuml;nfzig)(.*)
12:55 : (.*)(f&amp;uuml;nf)(.+)(vor)(.+)(eins)(.*)
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;Downloads&lt;/h2&gt;
Thats the Java source code for the genetic algorithm - but be warned, it&#39;s just a hack and is by no means a usable program.&lt;p /&gt;
It&#39;s a multi-threaded console application that saves the state every couple of generations in an XML file - so it can be started and stopped without loosing data.
&lt;p&gt;
&lt;i&gt;GenAlg.java&lt;/i&gt; is the main file, within its &lt;i&gt;run()&lt;/i&gt; you can switch the language between English and German. The file &lt;i&gt;Candidate.java&lt;/i&gt; contains 
the initial pattern for the word clock, just change it and the GA will try to find a solution for that clock.
&lt;p&gt;
The program will output a line on the console every couple of generations. It contains information about the current best solution, most importantly the 
number of times that the clock can display and the nuber it can&#39;t (labeled &quot;ok&quot; and &quot;nok&quot;).
&lt;p&gt;
You can download the source code for the GA from &lt;a href=&quot;https://github.com/AlessioM/TimePiece&quot;&gt;github&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://miniaturegiantspacehamster.blogspot.com/feeds/4560341182956221227/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/2011/03/building-word-clock-part-1-genetic.html#comment-form' title='19 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default/4560341182956221227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3929871335041261812/posts/default/4560341182956221227'/><link rel='alternate' type='text/html' href='http://miniaturegiantspacehamster.blogspot.com/2011/03/building-word-clock-part-1-genetic.html' title='Building a Word Clock - Part 1: Genetic Algorithms'/><author><name>Alessio</name><uri>http://www.blogger.com/profile/11164549943359354730</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpwFSMTVdQVpHne5kowJR_oAjWXuGenuGOgA-qQUHMi1XbHKx_48HaPheljAAki-LzxM44rJUtmCbbdE8ghkJhLd8buODtwOt4YVo19HmigCkqMfGo3_czKIXLkVyx3Uje8uF6v70O1s8/s72-c/final_clock.jpg" height="72" width="72"/><thr:total>19</thr:total></entry></feed>