예전에 함 만들어본거야..
-------------------- crypt.txt --------------------------------------
SYNAP + SOFT = WANTS + YOU
EMAIL= SPAM + SPAM + SPAM + SPAM + SPAM + SPAM
FORTY +TEN+ TEN= SIXTY
NUMBER = SQUARE + SQUARE + SQUARE + SQUARE
SEVENTY = FIVE + SEVEN + ELEVEN + TWELVE + FIFTEEN + TWENTY
MANET + MATISSE + MIRO + MONET + RENOIR = ARTISTS
SIX+SIX+SIX = NINE + NINE
ABCDE*F=GGGGGG
ADAM+AND+EVE=MOVED
FIVE+FIVE+NINE+ELEVEN=THIRTY
CROSS+ROADS=DANGER
USE + LESS = KIDDY
BILL + WILLIAM + MONICA = CLINTON
GREEN + ORANGE = COLORS
CEZANNE + MANET + MATISSE = ARTISTS
OLD+SALT+TOLD+TALL=TALES
COFFEE + COFFEE + COFFEE = THEOREM
SEND * ME = EMAIL
POWER = YOUR + SHOW
ALLEN = K * JEON
SEND +MORE = MONEY
USA + USSR = PEACE
------------------------------------------------------------------
---------------------- src ----------------------------------------
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char strBuff[20];
int totalCount = 10;
void input_org_str(char *data);
void number_proc(char *data);
void remove_blank(char *readBuff);
int main( void )
{
int i;
int min=1000, max=0;
int len;
FILE *fp;
char readBuff[1024];
fp = fopen("crypt.txt", "r");
while(fgets(readBuff, 1024, fp)){
strBuff[0] = \'\\0\';
readBuff[strlen(readBuff)-1] = \'\\0\';
remove_blank(readBuff);
input_org_str(readBuff);
len = strlen(strBuff);
printf("\'%s\' -> \'%s\', %d\\n", readBuff, strBuff, len);
number_proc(readBuff);
puts("");
puts("");
}
}
void remove_blank(char *readBuff)
{
char *sp, *ep;
sp = ep = readBuff;
while(*ep){
if(*ep == \' \'){
ep++;
continue;
}else{
*sp++ = *ep++;
} /* if(*ep == \' \'){ */
}
*sp = \'\\0\';
}
void check_word(int *srcNum, int *testData, int len)
{
register int i,j,k, tmp;
int vtmp[50], next = 1;
int leftV, rightV;
tmp = leftV = rightV = 0;
for(i=0,j=0;testData[i]>-110;i++){
if(testData[i]<0){
if(testData[i] == -1){
vtmp[j++] = tmp*next;
next = 1;
}else if(testData[i] == -10){
vtmp[j++] = tmp*next;
next = -1;
}
else if(testData[i] == -100){
for(k=0;k<j;k++){
if(vtmp[k]<0) leftV *= (-(vtmp[k]));
else leftV += vtmp[k];
}
if(next<0) leftV *= tmp;
else leftV += tmp;
next = 1;
j=0;
}
tmp = 0;
}else{
if(tmp == 0 && srcNum[testData[i]] == 0) return ;
tmp = tmp*10 + srcNum[testData[i]];
}
}
for(k=0;k<j;k++){
if(vtmp[k]<0) rightV *= (-(vtmp[k]));
else rightV += vtmp[k];
}
if(next<0) rightV *= tmp;
else rightV += tmp;
/*
if(!(totalCount++%5000)){
for(j=0;testData[j]> -120;j++){
if(testData[j]<0){
if(testData[j] == -1) printf(" + ");
else if(testData[j] == -10) printf(" * ");
else if(testData[j] == -100) printf(" = ");
}else{
printf("%c", strBuff[testData[j]]);
}
}
printf(" ---- ");
for(i=0;i<len;i++) printf("%d,", srcNum[i]);
puts("");
for(j=0;testData[j]> -120;j++){
if(testData[j]<0){
if(testData[j] == -1) printf(" + ");
else if(testData[j] == -10) printf(" * ");
else if(testData[j] == -100) printf(" = ");
}else{
printf("%d", srcNum[testData[j]]);
}
}
printf(" --> %d == %d\\n", leftV, rightV);
}
********************************************************************** */
if(leftV == rightV){
for(j=0;testData[j]> -120;j++){
if(testData[j]<0){
if(testData[j] == -1) printf(" + ");
else if(testData[j] == -10) printf(" * ");
else if(testData[j] == -100) printf(" = ");
}else{
printf("%c", strBuff[testData[j]]);
}
}
printf(" ---- ");
for(i=0;i<len;i++) printf("%d,", srcNum[i]);
puts("");
for(j=0;testData[j]> -120;j++){
if(testData[j]<0){
if(testData[j] == -1) printf(" + ");
else if(testData[j] == -10) printf(" * ");
else if(testData[j] == -100) printf(" = ");
}else{
printf("%d", srcNum[testData[j]]);
}
}
printf(" ==> %d == %d ------------- Ok..\\n", leftV, rightV);
}
}
void number_proc(char *data)
{
int len;
int srcNum[20] = {0,};
register int i,j;
int testData[200];
len = strlen(strBuff);
{
register char *p1, *p2;
for(i=0,p1=data;*p1;p1++,i++){
p2 = strBuff;
if(!isalpha(*p1)){
if(*p1 == \'+\') testData[i] = -1;
else if(*p1 == \'*\') testData[i] = -10;
else if(*p1 == \'=\') testData[i] = -100;
else testData[i] = -999;
}
while(*p2){
if(*p1 == *p2){
testData[i] = p2-strBuff;
break;
}
p2++;
}
} /* for(i=0,p1=data;*p1;p1++,i++){ */
testData[i] = -9999;
}
printf("strBuff:%s, data:%s \\n--> testData:", strBuff, data);
for(j=0;j<i;j++){
printf("%d,", testData[j]);
}
puts("");
for(srcNum[0]=1;srcNum[0]<10;srcNum[0]++){ /* 1 */
for(srcNum[1]=0;srcNum[1]<10;srcNum[1]++){ /* 2 */
if(srcNum[0] == srcNum[1]) continue;
for(srcNum[2]=0;srcNum[2]<10;srcNum[2]++){ /* 3 */
if(srcNum[0] == srcNum[2] || srcNum[1] == srcNum[2]) continue;
for(srcNum[3]=0;srcNum[3]<10;srcNum[3]++){ /* 4 */
if(srcNum[0] == srcNum[3] || srcNum[1] == srcNum[3] || srcNum[2] == srcNum[3]) continue;
if(len == 4){
check_word(srcNum, testData, len);
continue;
} /* if(len == 4){ */
for(srcNum[4]=0;srcNum[4]<10;srcNum[4]++){ /* 5 */
if(srcNum[0] == srcNum[4] || srcNum[1] == srcNum[4] || srcNum[2] == srcNum[4] || srcNum[3] == srcNum[4]) continue;
if(len == 5){
check_word(srcNum, testData, len);
continue;
} /* if(len == 4){ */
for(srcNum[5]=0;srcNum[5]<10;srcNum[5]++){ /* 6 */
if(srcNum[0] == srcNum[5] || srcNum[1] == srcNum[5] || srcNum[2] == srcNum[5] || srcNum[3] == srcNum[5] || srcNum[4] == srcNum[5]) continue;
if(len == 6){
check_word(srcNum, testData, len);
continue;
} /* if(len == 4){ */
for(srcNum[6]=0;srcNum[6]<10;srcNum[6]++){ /* 7 */
if(srcNum[0] == srcNum[6] || srcNum[1] == srcNum[6] || srcNum[2] == srcNum[6] || srcNum[3] == srcNum[6] || srcNum[4] == srcNum[6] || srcNum[5] == srcNum[6]) continue;
if(len == 7){
check_word(srcNum, testData, len);
continue;
} /* if(len == 4){ */
for(srcNum[7]=0;srcNum[7]<10;srcNum[7]++){ /* 8 */
if(srcNum[0] == srcNum[7] || srcNum[1] == srcNum[7] || srcNum[2] == srcNum[7] || srcNum[3] == srcNum[7] || srcNum[4] == srcNum[7]
|| srcNum[5] == srcNum[7] || srcNum[6] == srcNum[7]) continue;
if(len == 8){
check_word(srcNum, testData, len);
continue;
} /* if(len == 4){ */
for(srcNum[8]=0;srcNum[8]<10;srcNum[8]++){ /* 9 */
if(srcNum[0] == srcNum[8] || srcNum[1] == srcNum[8] || srcNum[2] == srcNum[8] || srcNum[3] == srcNum[8] || srcNum[4] == srcNum[8]
|| srcNum[5] == srcNum[8] || srcNum[6] == srcNum[8] || srcNum[7] == srcNum[8]) continue;
if(len == 9){
check_word(srcNum, testData, len);
continue;
} /* if(len == 4){ */
for(srcNum[9]=0;srcNum[9]<10;srcNum[9]++){ /* 10 */
if(srcNum[0] == srcNum[9] || srcNum[1] == srcNum[9] || srcNum[2] == srcNum[9] || srcNum[3] == srcNum[9] || srcNum[4] == srcNum[9]
|| srcNum[5] == srcNum[9] || srcNum[6] == srcNum[9] || srcNum[7] == srcNum[9] || srcNum[8] == srcNum[9]) continue;
if(len == 10){
check_word(srcNum, testData, len);
continue;
} /* if(len == 4){ */
for(srcNum[10]=0;srcNum[10]<10;srcNum[10]++){ /* 11 */
if(srcNum[0] == srcNum[10] || srcNum[1] == srcNum[10] || srcNum[2] == srcNum[10] || srcNum[3] == srcNum[10] || srcNum[4] == srcNum[10]
|| srcNum[5] == srcNum[10] || srcNum[6] == srcNum[10] || srcNum[7] == srcNum[10] || srcNum[8] == srcNum[10] || srcNum[9] == srcNum[10]) continue;
check_word(srcNum, testData, len);
}
}
}
}
}
}
}
}
}
}
} /* for */
return;
done:
totalCount++;
printf(" ::::::::: %d -> %s\\n", totalCount, data);
}
void input_org_str(char *data)
{
char *p;
char *dp;
for(p=data;*p;p++){
if(isalpha(*p)){
for(dp=strBuff;*dp;dp++){
if(*dp == *p) break;
}
if(*dp != *p){
*dp++ = *p;
*dp = \'\\0\';
}
}
}
}
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.