普兹朗是Brainfuck的派生,其中符号X
基于上面的三个字符执行BF命令,其他任何操作都不起作用。
下面是Puzzlang的翻译表,其中X
是文字X,.
代表其他任何东西:
> < + - . , [ ]
..X X.. XXX ... .X. X.X XX. .XX
X X X X X X X X
另外,在翻译步骤中,整个源代码都是水平的和垂直的。例如,下面的代码是一个无限循环:
XX X
因为您可以像这样查看代码(点就是包装X的地方)
... ..
.XX X.
与翻译表的匹配给出了三个X的+[]
顺序。
梦魇普兹朗是普通普兹郎的一对邪恶双胞胎。在梦魇Puzzlang中,每个X根据其八个邻居转换成一个字节。任何非X字符都是空的。包装规则是一样的。
由于没有“正式”规范,让我们假设下面的模式(其中X表示要翻译的模式)
abc
dXe
fgh
翻译成二进制格式的abcdefgh
(X是1,非X是零).然后是下面的代码
XX...
X..X.
X..XX
X..XX
X.XX.
将4a b4 66 03 56 4b bf d2 6e fd c3 2c 70
转换为十六进制,或将J´fVK¿ÒnýÃ,p
翻译为字符串。请注意,生成的字符串很可能具有ASCII不可打印。
将给定的噩梦Puzzlang代码转换为字符串。
对于输入,可以采用字符的2D数组、字符串列表或行由换行符分隔的单个字符串。您可以假设输入为矩形形状,即行长相等。
对于输出,可以给出一个字符串、一个字符列表或一个字符代码列表。
请注意,当用除大写X以外的任何其他点替换时,结果必须保持不变。
X (1 row, 1 column)
String: ÿ
Charcode: [255]
X. (1 row, 2 columns)
String: B
Charcode: [66]
X
. (2 rows, 1 column)
String:
Charcode: [24]
X.
.X
String: ¥¥
Charcode: [165, 165]
X.X
.X.
String: 1δ
Charcode: [49, 140, 165]
X.X
XX.
X.X
String: Ómεv«
Charcode: [211, 109, 206, 181, 118, 171]
X.XX.XXX..XXXX.
String: BkÖkÿÖkÿÿÖ
Charcode: [66, 107, 214, 107, 255, 214, 107, 255, 255, 214]
X.XX.XXX.XXXXX.
XX.X..XX....X..
String: cR){Ö9Z”JµÆïÖç
Charcode: [99, 173, 82, 41, 123, 214, 8, 24, 57, 90, 148, 74, 181, 198, 239, 214, 231]
X
X
X
.
.
X
.
X
X
.
X
String: ÿÿøø
Charcode: [255, 255, 248, 24, 31, 248, 31]
XX
X.
XX
.X
.X
XX
..
XX
XX
..
.X
String: º]ç]ºâG¸Xøø
Charcode: [186, 93, 231, 93, 186, 226, 71, 184, 88, 31, 31, 248, 248, 7]
XX XXX XX XX
X X X X X X
X X X X X XX
X X X X X X
XX XXX XX XX
XXX XXX X XX
X X X X X
X X X X X XX
X X X X X X
XXX XXX XX X
(11 rows, 13 columns, no extra padding, result has two newlines)
zôª}òªuJ½æbÂb‚cRBBBBJ½ÇCFCDcXH¸PH°H¸
æbÂBcRBBBJ½ÃFCFCbO¾UO¾UN”C
Charcode: [122, 244, 170, 125, 242, 170, 117, 74, 189, 230, 98, 194, 98, 130, 99, 82, 66, 66, 66, 66, 74, 189, 199, 67, 70, 67, 68, 99, 88, 144, 72, 184, 80, 72, 176, 72, 184, 26, 28, 16, 10, 29, 18, 2, 10, 29, 230, 98, 194, 66, 99, 82, 2, 66, 66, 66, 74, 189, 195, 70, 67, 70, 67, 98, 79, 190, 85, 79, 190, 85, 78, 148, 67]
适用标准的密码-高尔夫规则。最短的提交(以字节为单位)获胜。
发布于 2021-01-27 10:41:38
¯1~⍨,1↓∘⍉∘⌽⍣4⊢{2 2⌷⍵:2⊥(~¯9↑5↑1)/,⍵⋄¯1}⌺3 3⊢⍉∘(¯1∘↑⍪⊢⍪1∘↑)⍣2⊢'X'=⎕
一个完整的程序,通过STDIN接收一个二进制矩阵,返回一个编码点数组。
x¯1~⍨,1↓∘⍉∘⌽⍣4⊢{2 2⌷⍵:2⊥(~¯9↑5↑1)/,⍵⋄¯1}⌺3 3⊢⍉∘(¯1∘↑⍪⊢⍪1∘↑)⍣2⊢'X'=⎕
⎕
接收输入
'X's为1s的'X'=
布尔矩阵
⍉∘(...)⍣2⊢
执行了两次以下操作:
¯1∘↑⍪⊢⍪1∘↑
衬垫每一行都有其两侧的环绕
⍉∘
和转座子
然后,{...}⌺3 3⊢
对每个3x3窗口执行以下操作:
如果中间元素为1,则2 2⌷⍵:
:
2⊥(~¯9↑5↑1)/,⍵
将窗口的其余部分解码为二进制
否则,返回⋄¯1
1。
⍣4⊢
执行以下4次操作:
1↓∘⍉∘⌽
旋转90°,删除第一行(移除边框单元格)
,
平坦成一个简单的数组
¯1~⍨
删除所有1s
发布于 2018-09-21 11:26:14
将输入作为一个二维字符数组。返回字符代码数组。
f=M=>M.map((r,y)=>r.map((v,x)=>v>f&&o.push([...'22211000'].map((k,j)=>s|=(M[(y+h+~-k)%h][(x+w+~-'21020'[j%5])%w]>f)<<j,h=M.length,w=M[s=0].length)|s)),o=[])&&o
f = M => // f = main function taking the input matrix
// it is named because we are later using '>f'
M.map((r, y) => // for each row r[] at position y in M[]:
r.map((v, x) => // for each value v at position x in r[]:
v > f && // ignore this cell if v is not equal to 'X'
o.push( // otherwise, push a new value in o[]:
[...'22211000'] // iterate over dy values (+1)
.map((k, j) => // for each value k at position j in this array:
s |= ( // update s:
M[(y + h + // compute the row
~-k) // by adding dy = k - 1
% h] // and applying a modulo h
[(x + w + // compute the column
~-'21020'[j % 5]) // by adding dx = [2,1,0,2,0,2,1,0][j] - 1
% w] // and applying a modulo w
> f // test whether this cell is a 'X'
) << j, // and set the corresponding bit in s if it is
h = M.length, // initialize h = matrix height
w = M[s = 0].length // initialize w = matrix width and s = bitmask
) | s // end of map() over dy; yield s
) // end of push()
), // end of map over r[]
o = [] // initialize o = output array
) && o // end of map over M[]; return o
发布于 2021-05-29 22:13:19
=”Xµ-r1p`ẸƇ+ⱮŒṪœịµḄ
一种一元链接,它接受一行列表并生成代码点列表。
=”Xµ-r1p`ẸƇ+ⱮŒṪœịµḄ - Link: lines
”X - character = 'X'
= - equals? -> binary matrix from lines with X:1 and .:0
µ µ - monadic chain - f(v=that):
- - -1
1 - 1
r - inclusive range = [-1, 0, 1]
` - use as both arguments of:
p - Cartesian product
= [[-1,-1],[-1,0],[-1,1],[0,-1],[0,0],[0,1],[1,-1],[1,0],[1,1]]
Ƈ - keep those for which:
Ẹ - any? = [[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]]
ŒṪ - multidimensional truthy indices (v)
Ɱ - map across these with:
+ - add
œị - index into (v)
Ḅ - convert from binary
https://codegolf.stackexchange.com/questions/172586
复制相似问题