【发布时间】:2014-08-25 16:44:26
【问题描述】:
我需要对四个字符执行XOR 操作,其中每个字符都有如下的位表示:
A = 00
G = 01
C = 10
T = 11
我需要创建一个表格,将XORs 两个字符放在一起,以下列方式给出XORing 字符对的所有组合的值。
XOR A G C T
A A G C T
G G A T C
C C T A G
T T C G A
要获得输出,您需要将每个字符转换为其位表示,XOR 位,然后使用结果并将其转换回正确的字符。比如查询表格的第三行第二列,由XORingC和G:
C = 10
G = 01
C XOR G = 10 XOR 01 = 11 --> T
我最终希望将此规则应用于 5 x 5 矩阵中的加扰字符。 举个例子:
A = 'GATT' 'AACT' 'ACAC' 'TTGA' 'GGCT'
'GCAC' 'TCAT' 'GTTC' 'GCCT' 'TTTA'
'AACG' 'GTTA' 'ACGT' 'CGTC' 'TGGA'
'CTAC' 'AAAA' 'GGGC' 'CCCT' 'TCGT'
'GTGT' 'GCGG' 'GTTT' 'TTGC' 'ATTA'
B = 'ATAC' 'AAAT' 'AGCT' 'AAGC' 'AAGT'
'TAGG' 'AAGT' 'ATGA' 'AAAG' 'AAGA'
'TAGC' 'CAGT' 'AGAT' 'GAAG' 'TCGA'
'GCTA' 'TTAC' 'GCCA' 'CCCC' 'TTTC'
'CCAA' 'AGGA' 'GCAG' 'CAGC' 'TAAA'
我想生成一个矩阵C,这样A 的每个元素都得到XORed,其对应的元素在B 中。
例如考虑第一行第一列:
A{1,1} XOR B{1,1} = GATT XOR ATAC = GTTG
如何对整个矩阵执行此操作?
【问题讨论】:
-
A=00没有意义。也许A='00'或A=[0 0]或别的什么? -
另外作为一个例子,你能告诉我们
xor(A,G)是什么吗?输出类型是什么 - 元胞数组或双数组或字符? -
我想通了。基本上,将这两个变量转换为它们的位表示,
xor每个位单独,然后进行反向查找。 -
@Divakar - 我知道 OP 想要什么。我已经编辑了帖子以使其更加清晰。这违反了 SO 政策,但这最终是 OP 想要传达的内容......所以我想我会为未来的读者编辑它。看看我的帖子,如果您有任何更有效的解决方案,我欢迎您!
-
@rayryeng 太棒了!您是这里的心理专家(+1);)您的解决方案对我来说看起来不错。无论如何,使用元胞数组,有效解决方案的数量是有限的。