PHP 224, 218, 210 206
foreach(explode(",","I19SR,9ZY8H,,CNK,5JRU0,H,CN4,G0H,H160,CN4,75,CU9,AMIHD,MTQP,HQOXK,7L,74,G,CXS,CU9,HTOG,,CNK,MHA8,CNL,1")as$a){$b++;for($c=0;$c<26;$c++)echo base_convert($a,36,10)&pow(2,$c)?chr(96+$b).chr(97+$c)." ":"";}
aa ab ad ae ag ah ai al am an ar as at aw ax ay ba be bi bo by de do ed ef eh el em en er es et ex fa fe go ha he hi hm ho id if in is it jo ka ki la li lo ma me mi mm mo mu my na ne no nu od oe of oh oi om on op or os ow ox oy pa pe pi qi re sh si so ta ti to uh um un up us ut we wo xi xu ya ye yo za
Definitely not a great score, but I liked the challenge.
I create a table of the options, created a bitwise system to flag which options are valid.
Then I base-36 encoded those options to get the string:
"I19SR,9ZY8H,,CNK,5JRU0,H,CN4,G0H,H160,CN4,75,CU9,AMIHD,MTQP,HQOXK,7L,74,G,CXS,CU9,HTOG,,CNK,MHA8,CNL,1"
Note the 3rd entry in that string array doesn't have a value, because C has no options.
To print the values, I just convert the valid options to chars.
There might be something I could do to reduce recognising that there are no words ending in C, J, K, Q, V or Z, but I can't think of a method to reduce it atm.
By transposing the table, there are more empty elements and the data encodes a little more compactly which shaved off a few bytes. The array is now printed in a different order:
foreach(explode(",","UB1YB,1,,CUP,CLMEJ,CUO,1,SG0H,5J9MR,,,H,MX01,MTXT,CYO5M,MTQ8,,CNL,MTXT,MHAP,50268,,CN5,CNL,FSZ,,")as$a){$b++;for($c=0;$c<26;$c++)echo base_convert($a,36,10)&pow(2,$c)?chr(97+$c).chr(96+$b)." ":"";}
aa ba fa ha ka la ma na pa ta ya za ab ad ed id od ae be de fe he me ne oe pe re we ye ef if of ag ah eh oh sh uh ai bi hi ki li mi oi pi qi si ti xi al el am em hm mm om um an en in on un bo do go ho jo lo mo no so to wo yo op up ar er or as es is os us at et it ut mu nu xu aw ow ax ex ox ay by my oy
Thanks to Ismael for the explode and for loop hints.
foreach(explode(3,UB1YB3133CUP3CLMEJ3CUO313SG0H35J9MR333H3MX013MTXT3CYO5M3MTQ833CNL3MTXT3MHAP35026833CN53CNL3FSZ)as$d)for($e++,$f=0;$f<26;$f++)echo base_convert($d,36,10)&pow(2,$f)?chr(97+$f).chr(96+$e)." ":"";
With an update to php5.6, pow(,)
can be replaced by **
saving another 4 bytes.
foreach(explode(3,UB1YB3133CUP3CLMEJ3CUO313SG0H35J9MR333H3MX013MTXT3CYO5M3MTQ833CNL3MTXT3MHAP35026833CN53CNL3FSZ)as$d)for($e++,$f=0;$f<26;$f++)echo base_convert($d,36,10)&2**$f?chr(97+$f).chr(96+$e)." ":"";
8Do the words have to be outputted in the same order? – Sp3000 – 2015-08-13T03:26:46.577
2@Sp3000 I'll say no, if something interesting can be thought up – qwr – 2015-08-13T03:29:51.160
To avoid link rot, I've added your list to the question.Your list is the 2006 US list. The 2015 UK list contains significant differences, for example, it includes the words
CH
andZO
and has only very recently includedZA
. I'm not clear what you mean by "something interesting." I think that means any order is acceptable, because you would be saying that some orders are arbitrarily acceptable and others not. – Level River St – 2015-08-13T05:34:05.1401Would an at-sign be an acceptable separator? If the answer is yes, can I have a trailing at-sign? – Dennis – 2015-08-13T05:47:52.257
2Please clarify what exactly counts as separated somehow. Does it have to be whitespace? If so, would non-breaking spaces be allowed? – Dennis – 2015-08-13T14:14:04.820
1
Similar idea to http://codegolf.stackexchange.com/q/39787/29750
– NinjaBearMonkey – 2015-08-13T14:27:51.1532Is there a site for looking up what these words mean? I've searched for "ZA" and ... short for Pizza. Really? I'd slap someone if they tried to use that "word" in scrabble – Mikey Mouse – 2015-08-13T15:11:38.317
5
Ok, found a translation
– Mikey Mouse – 2015-08-13T15:16:08.4771Note that not only
no word starts with C or V
but no word really contain C or V. Maybe is useful for someone looking at bit optimization. – sergioFC – 2015-08-13T21:55:32.883Vaguely related: http://codegolf.stackexchange.com/q/39787/15599
– Level River St – 2015-08-14T18:58:58.830Is there a limit on running time, or can I proof that within a finite running time, a valid answer is given? – agtoever – 2015-08-15T08:48:19.643
3Vi isn't a word? News to me... – jmoreno – 2015-08-15T15:23:07.123