-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
shrink.coffee
34 lines (32 loc) · 1 KB
/
shrink.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Shrink 2x2 scaled files down to 1x1
fs = require 'fs'
path = require 'path'
dirname = process.argv[2]
for filename in fs.readdirSync dirname when filename.endsWith 'asc'
pathname = path.join dirname, filename
text = fs.readFileSync pathname, encoding: 'utf8'
lines = text.split '\n'
lines.pop() if lines[lines.length-1] == ''
get = (row, col) ->
(lines[row] ? [])[col] ? ' '
nRows = lines.length
nCols = Math.max ...(line.length for line in lines)
nRows = 2 * Math.ceil nRows / 2
nCols = 2 * Math.ceil nCols / 2
valid = true
for row in [0...nRows] by 2
for col in [0...nCols] by 2
unless get(row, col) == get(row+1, col) == get(row, col+1) == get(row+1, col+1)
valid = false
break
break unless valid
console.log pathname, valid
if valid
out =
(for row in [0...nRows] by 2
(for col in [0...nCols] by 2
get(row, col)
).join ''
).join('\n') + '\n'
console.log out
fs.writeFileSync pathname, out, encoding: 'utf8'