Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
40
Task/Semordnilap/JavaScript/semordnilap-1.js
Normal file
40
Task/Semordnilap/JavaScript/semordnilap-1.js
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env node
|
||||
var fs = require('fs');
|
||||
var sys = require('sys');
|
||||
|
||||
var dictFile = process.argv[2] || "unixdict.txt";
|
||||
|
||||
var dict = {};
|
||||
fs.readFileSync(dictFile)
|
||||
.toString()
|
||||
.split('\n')
|
||||
.forEach(function(word) {
|
||||
dict[word] = word.split("").reverse().join("");
|
||||
});
|
||||
|
||||
function isSemordnilap(word) { return dict[dict[word]]; };
|
||||
|
||||
var semordnilaps = []
|
||||
for (var key in dict) {
|
||||
if (isSemordnilap(key)) {
|
||||
var rev = dict[key];
|
||||
if (key < rev) {
|
||||
semordnilaps.push([key,rev]) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var count = semordnilaps.length;
|
||||
sys.puts("There are " + count + " semordnilaps in " +
|
||||
dictFile + ". Here are 5:" );
|
||||
|
||||
var indices=[]
|
||||
for (var i=0; i<count; ++i) {
|
||||
if (Math.random() < 1/Math.ceil(i/5.0)) {
|
||||
indices[i%5] = i
|
||||
}
|
||||
}
|
||||
indices.sort()
|
||||
for (var i=0; i<5; ++i) {
|
||||
sys.puts(semordnilaps[indices[i]]);
|
||||
}
|
||||
38
Task/Semordnilap/JavaScript/semordnilap-2.js
Normal file
38
Task/Semordnilap/JavaScript/semordnilap-2.js
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/env rhino
|
||||
|
||||
importPackage (java.io)
|
||||
|
||||
var dictFile = arguments[0] || "unixdict.txt";
|
||||
|
||||
var reader = new BufferedReader(new FileReader(dictFile));
|
||||
var dict = {};
|
||||
var word;
|
||||
while (word = reader.readLine()) {
|
||||
dict[word] = word.split("").reverse().join("");
|
||||
}
|
||||
|
||||
function isSemordnilap(word) { return dict[dict[word]]; };
|
||||
|
||||
var semordnilaps = []
|
||||
for (var key in dict) {
|
||||
if (isSemordnilap(key)) {
|
||||
var rev = dict[key];
|
||||
if (key < rev) {
|
||||
semordnilaps.push([key,rev]) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var count = semordnilaps.length;
|
||||
print("There are " + count + " semordnilaps in " +
|
||||
dictFile + ". Here are 5:" );
|
||||
var indices=[]
|
||||
for (var i=0; i<count; ++i) {
|
||||
if (Math.random() < 1/Math.ceil(i/5.0)) {
|
||||
indices[i%5] = i
|
||||
}
|
||||
}
|
||||
indices.sort()
|
||||
for (var i=0; i<5; ++i) {
|
||||
print(semordnilaps[indices[i]]);
|
||||
}
|
||||
60
Task/Semordnilap/JavaScript/semordnilap-3.js
Normal file
60
Task/Semordnilap/JavaScript/semordnilap-3.js
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
(() => {
|
||||
'use strict';
|
||||
|
||||
// semordnilap :: [String] -> String
|
||||
const semordnilap = xs => {
|
||||
const go = ([s, ws], w) =>
|
||||
s.has(w.split('').reverse().join('')) ? (
|
||||
[s, [w].concat(ws)]
|
||||
) : [s.add(w), ws];
|
||||
return xs.reduce(go, [new Set(), []])[1];
|
||||
};
|
||||
|
||||
const main = () => {
|
||||
|
||||
// xs :: [String]
|
||||
const xs = semordnilap(
|
||||
lines(readFile('unixdict.txt'))
|
||||
);
|
||||
|
||||
console.log(xs.length);
|
||||
xs.filter(x => 4 < x.length).forEach(
|
||||
x => showLog(...[x, x.split('').reverse().join('')])
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
// GENERIC FUNCTIONS ----------------------------
|
||||
|
||||
// lines :: String -> [String]
|
||||
const lines = s => s.split(/[\r\n]/);
|
||||
|
||||
// readFile :: FilePath -> IO String
|
||||
const readFile = fp => {
|
||||
const
|
||||
e = $(),
|
||||
uw = ObjC.unwrap,
|
||||
s = uw(
|
||||
$.NSString.stringWithContentsOfFileEncodingError(
|
||||
$(fp)
|
||||
.stringByStandardizingPath,
|
||||
$.NSUTF8StringEncoding,
|
||||
e
|
||||
)
|
||||
);
|
||||
return undefined !== s ? (
|
||||
s
|
||||
) : uw(e.localizedDescription);
|
||||
};
|
||||
|
||||
// showLog :: a -> IO ()
|
||||
const showLog = (...args) =>
|
||||
console.log(
|
||||
args
|
||||
.map(JSON.stringify)
|
||||
.join(' -> ')
|
||||
);
|
||||
|
||||
// MAIN ---
|
||||
return main();
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue