September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -1,2 +0,0 @@
---
note: Semordnilap

View file

@ -1,56 +1,28 @@
text
reverse(text s)
{
data b;
integer i;
integer p;
record r;
file f;
text s;
i = length(s);
while (i) {
i -= 1;
b_insert(b, -1, s[i]);
}
f_affix(f, "unixdict.txt");
return b_string(b);
while (f_line(f, s) != -1) {
r[s] = 0;
}
integer
main(void)
{
integer c, p;
record r;
file f;
text s;
p = 0;
f_affix(f, "unixdict.txt");
for (s in r) {
text t;
while (f_line(f, s) != -1) {
r_p_integer(r, s, 0);
}
c = 0;
p = 0;
if (r_first(r, s)) {
do {
text t;
t = reverse(s);
if (compare(s, t) > 0) {
if (r_key(r, t)) {
p += 1;
if (c < 5) {
c += 1;
o_text(s);
o_byte(' ');
o_text(t);
o_byte('\n');
}
}
t = b_string(b_reverse(b_draft(s)));
if (s > t) {
if (r_key(r, t)) {
p += 1;
if (p <= 5) {
o_(s, " ", t, "\n");
}
} while (r_greater(r, s, s));
}
}
o_form("Semordnilap pairs: ~\n", p);
return 0;
}
o_form("Semordnilap pairs: ~\n", p);

View file

@ -1,7 +1,9 @@
fun semordnilap() {
val words = File("unixdict.txt").readLines().toSet()
val pairs = words.asSequence().map { it to it.reversed() } // Pair(word, reversed word)
.filter { it.first < it.second && it.second in words }.toList() // avoid dupes+palindromes, find matches
println("Found ${pairs.size()} semordnilap pairs")
import java.io.File
fun main(args: Array<String>) {
val words = File("/usr/share/dict/words").readLines().toSet()
val pairs = words.map { Pair(it, it.reversed()) }
.filter { it.first < it.second && it.second in words } // avoid dupes+palindromes, find matches
println("Found ${pairs.size} semordnilap pairs")
println(pairs.take(5))
}

View file

@ -0,0 +1,9 @@
var [const] words= // create hashed unixdict of striped words (word:True, ...)
File("dict.txt").howza(11).pump(Dictionary().howza(8).add.fp1(True));
ss:=words.pump(List, // push stripped unixdict words through some functions
fcn(w){ words.holds(w.reverse()) }, Void.Filter, // filter palindromes
// create ("word","drow") if "word"<"drow" (ie remove duplicates)
fcn(w){ r:=w.reverse(); if(w<r) T(w,r) else Void.Skip });
ss.len().println(); //--> 158
ss.shuffle()[0,5].println();