- 论坛徽章:
- 7
|
本帖最后由 rubyish 于 2017-11-26 23:13 编辑
回复 1# bmne
KBD, nandugao ~~去掉两种及以上相同字母在行中任意位置(排除紧靠在一起)出现2次及以上( ≥2 )的行。( 如 asd3afsh abf56fba ae4aeaha )
xiugai ruxia:
去掉两种及以上相同字母在行中任意位置, 出现2次及以上( ≥2 )的行。( 如 asd3afsh abf56fba ae4aeaha ) support LENGTH = 8 ONLY!!
[length "abf56fba" = 8]
run:
karnataka.c
- # include "karnataka.h"
- my A[256] = {
- [7] = 1, [14] = 1, [15] = 1, [23] = 1, [28] = 1, [29] = 1,
- [30] = 1, [31] = 1, [39] = 1, [46] = 1, [47] = 1, [55] = 1,
- [56] = 1, [57] = 1, [58] = 1, [59] = 1, [60] = 1, [61] = 1,
- [62] = 1, [63] = 1, [71] = 1, [78] = 1, [79] = 1, [87] = 1,
- [92] = 1, [93] = 1, [94] = 1, [95] = 1, [103] = 1, [110] = 1,
- [111] = 1, [112] = 1, [113] = 1, [114] = 1, [115] = 1, [116] = 1,
- [117] = 1, [118] = 1, [119] = 1, [120] = 1, [121] = 1, [122] = 1,
- [123] = 1, [124] = 1, [125] = 1, [126] = 1, [127] = 1, [135] = 1,
- [142] = 1, [143] = 1, [151] = 1, [156] = 1, [157] = 1, [158] = 1,
- [159] = 1, [167] = 1, [174] = 1, [175] = 1, [183] = 1, [184] = 1,
- [185] = 1, [186] = 1, [187] = 1, [188] = 1, [189] = 1, [190] = 1,
- [191] = 1, [199] = 1, [206] = 1, [207] = 1, [215] = 1, [219] = 1,
- [220] = 1, [221] = 1, [222] = 1, [223] = 1, [224] = 1, [225] = 1,
- [226] = 1, [227] = 1, [228] = 1, [229] = 1, [230] = 1, [231] = 1,
- [232] = 1, [233] = 1, [234] = 1, [235] = 1, [236] = 1, [237] = 1,
- [238] = 1, [239] = 1, [240] = 1, [241] = 1, [242] = 1, [243] = 1,
- [244] = 1, [245] = 1, [246] = 1, [247] = 1, [248] = 1, [249] = 1,
- [250] = 1, [251] = 1, [252] = 1, [253] = 1, [254] = 1, [255] = 1,
- };
- my B[256] = {
- [21] = 1, [37] = 1, [41] = 1, [42] = 1, [43] = 1, [45] = 1,
- [53] = 1, [69] = 1, [73] = 1, [74] = 1, [75] = 1, [77] = 1,
- [81] = 1, [82] = 1, [83] = 1, [84] = 1, [85] = 1, [86] = 1,
- [87] = 1, [89] = 1, [90] = 1, [91] = 1, [93] = 1, [101] = 1,
- [105] = 1, [106] = 1, [107] = 1, [109] = 1, [117] = 1, [133] = 1,
- [137] = 1, [138] = 1, [139] = 1, [141] = 1, [145] = 1, [146] = 1,
- [147] = 1, [148] = 1, [149] = 1, [150] = 1, [151] = 1, [153] = 1,
- [154] = 1, [155] = 1, [157] = 1, [161] = 1, [162] = 1, [163] = 1,
- [164] = 1, [165] = 1, [166] = 1, [167] = 1, [168] = 1, [169] = 1,
- [170] = 1, [171] = 1, [172] = 1, [173] = 1, [174] = 1, [175] = 1,
- [177] = 1, [178] = 1, [179] = 1, [180] = 1, [181] = 1, [182] = 1,
- [183] = 1, [185] = 1, [186] = 1, [187] = 1, [189] = 1, [197] = 1,
- [201] = 1, [202] = 1, [203] = 1, [205] = 1, [209] = 1, [210] = 1,
- [211] = 1, [212] = 1, [213] = 1, [214] = 1, [215] = 1, [217] = 1,
- [218] = 1, [219] = 1, [221] = 1, [229] = 1, [233] = 1, [234] = 1,
- [235] = 1, [237] = 1, [245] = 1
- };
- int main( my $numa, My **$para ) {
- if ( $numa != 2 ) fprintf( stderr, "use:\t%s file\n", $para[0] );
- else explore( $para[1] );
- }
- /* _____________________ SUB _____________________ */
- # define CHARA 8
- # define LEN CHARA + 2
- # define isDigit(C) ( C < 'A' )
- sub explore (My *file) {
- FILE * fh = fopen( file, "r" );
- if ( !fh ) {
- fprintf( stderr, "No such file: %s\n", file );
- exit(1);
- }
- My $line[LEN] = {0};
- my $hash[123] = {0};
- while ( fgets( $line, LEN, fh ) ) {
- # define hash(I) $hash[(int)$line[I]]
- my $var = 0;
- my $i = 0;
- for ( ; $i < CHARA; $i++ ) {
- if ( $line[$i] <= '1'
- || $line[$i] == 'o'
- || $line[$i] == $line[ $i + 1 ] ) last;
- if ( isDigit( $line[$i] ) ) {
- $var |= 1 << $i;
- if ( A[$var] ) last;
- }
- else {
- hash($i) |= 1 << ( $i + 4 );
- if ( $i > 3 && B[ hash($i) >> 4 ] ) last;
- hash($i)++;
- }
- }
- if ( $i == CHARA ) {
- my $dit = 0;
- for ( my $j = 0; $j < CHARA; $j++ ) {
- if ( !hash($j) ) next;
- if ( ( hash($j) & 0b1111 ) > 1 ) $dit++;
- hash($j) = 0;
- }
- if ( $dit < 2 ) fputs( $line, stdout );
- }
- else {
- for ( my $j = 0; $j <= $i; $j++ ) hash($j) = 0;
- }
- }
- fclose(fh);
- }
复制代码
karnataka.h
- # include <stdio.h>
- # include <stdlib.h>
- typedef char My;
- typedef int my;
- # define last break
- # define next continue
- # define sub void
- sub explore (My*);
复制代码
|
|