AOJを解く part3
problem 2522:
ユーザーが設定したパスワードが条件を満たすかどうか判定せよ
- 6文字以上である
- 数字・大文字英字・小文字英字をそれぞれ1つ以上含んでいる
これらの条件を満たせば,"VALID", 満たしていなければ,"INVALID"と表示せよ
#include<stdio.h> int main() { int i = 0; char password[20]; int check = 0b0000; scanf("%s", password); do{ if(password[i]>='0'&&password[i]<='9') check |= 0b0001; if(password[i]>='a'&&password[i]<='z') check |= 0b0010; if(password[i]>='A'&&password[i]<='Z') check |= 0b0100; i++; }while(password[i] != '\0'); if(i >= 6) check |= 0b1000; puts((check == 0b1111) ? ("VALID") : ("INVALID")); return 0; }
このコードのポイントは以下の通り.
- checkを4bit二進数とし,4つの条件を満たすかをbitで管理→1変数簡単化
- 三項演算子で出力も1行