|
验证你的12题答案:
验证所有题目出现不超过十次:
用16进制的12位表示:
WITH t AS (
SELECT 'b1' AS test_id, '000111000111' AS problems FROM DUAL
UNION ALL SELECT 'b2' AS test_id, '000111000111' AS problems FROM DUAL
UNION ALL SELECT 'b3' AS test_id, '000111000111' AS problems FROM DUAL
UNION ALL SELECT 'b4' AS test_id, '000111000111' AS problems FROM DUAL
UNION ALL SELECT 'b5' AS test_id, '000111000111' AS problems FROM DUAL
UNION ALL SELECT 'b6' AS test_id, '011001011001' AS problems FROM DUAL
UNION ALL SELECT 'b7' AS test_id, '011001011001' AS problems FROM DUAL
UNION ALL SELECT 'b8' AS test_id, '011001011001' AS problems FROM DUAL
UNION ALL SELECT 'b9' AS test_id, '011001011001' AS problems FROM DUAL
UNION ALL SELECT 'b10' AS test_id, '011001011001' AS problems FROM DUAL
UNION ALL SELECT 'b11' AS test_id, '101010101010' AS problems FROM DUAL
UNION ALL SELECT 'b12' AS test_id, '101010101010' AS problems FROM DUAL
UNION ALL SELECT 'b13' AS test_id, '101010101010' AS problems FROM DUAL
UNION ALL SELECT 'b14' AS test_id, '101010101010' AS problems FROM DUAL
UNION ALL SELECT 'b15' AS test_id, '101010101010' AS problems FROM DUAL
UNION ALL SELECT 'b16' AS test_id, '110100110100' AS problems FROM DUAL
UNION ALL SELECT 'b17' AS test_id, '110100110100' AS problems FROM DUAL
UNION ALL SELECT 'b18' AS test_id, '110100110100' AS problems FROM DUAL
UNION ALL SELECT 'b19' AS test_id, '110100110100' AS problems FROM DUAL
UNION ALL SELECT 'b20' AS test_id, '110100110100' AS problems FROM DUAL
)
SELECT TO_CHAR(SUM(TO_NUMBER(problems,'XXXXXXXXXXXX')),'XXXXXXXXXXXX') FROM t;
AAAAAAAAAAAA
这个过关,刚好全部十次
验证所有组合都有至少两题公共的:
WITH t AS (
SELECT 'b1' AS test_id, 000111000111 AS problems FROM DUAL
UNION ALL SELECT 'b2' AS test_id, 000111000111 AS problems FROM DUAL
UNION ALL SELECT 'b3' AS test_id, 000111000111 AS problems FROM DUAL
UNION ALL SELECT 'b4' AS test_id, 000111000111 AS problems FROM DUAL
UNION ALL SELECT 'b5' AS test_id, 000111000111 AS problems FROM DUAL
UNION ALL SELECT 'b6' AS test_id, 011001011001 AS problems FROM DUAL
UNION ALL SELECT 'b7' AS test_id, 011001011001 AS problems FROM DUAL
UNION ALL SELECT 'b8' AS test_id, 011001011001 AS problems FROM DUAL
UNION ALL SELECT 'b9' AS test_id, 011001011001 AS problems FROM DUAL
UNION ALL SELECT 'b10' AS test_id, 011001011001 AS problems FROM DUAL
UNION ALL SELECT 'b11' AS test_id, 101010101010 AS problems FROM DUAL
UNION ALL SELECT 'b12' AS test_id, 101010101010 AS problems FROM DUAL
UNION ALL SELECT 'b13' AS test_id, 101010101010 AS problems FROM DUAL
UNION ALL SELECT 'b14' AS test_id, 101010101010 AS problems FROM DUAL
UNION ALL SELECT 'b15' AS test_id, 101010101010 AS problems FROM DUAL
UNION ALL SELECT 'b16' AS test_id, 110100110100 AS problems FROM DUAL
UNION ALL SELECT 'b17' AS test_id, 110100110100 AS problems FROM DUAL
UNION ALL SELECT 'b18' AS test_id, 110100110100 AS problems FROM DUAL
UNION ALL SELECT 'b19' AS test_id, 110100110100 AS problems FROM DUAL
UNION ALL SELECT 'b20' AS test_id, 110100110100 AS problems FROM DUAL
)
,t2 (cnt,test_id,problems,all_id) AS (
SELECT 1 cnt
,test_id
,problems
,CAST(test_id AS VARCHAR2(20))
FROM t
UNION ALL
SELECT t2.cnt+1
,t.test_id
,t2.problems + t.problems
,t2.all_id||','||t.test_id
FROM t,t2
WHERE t2.cnt<5
AND t2.test_id<t.test_id
)
SELECT TO_CHAR(problems),all_id FROM t2
WHERE cnt=5 AND REGEXP_COUNT(problems,'5')<2 AND ROWNUM=1;
TO_CHAR(PROBLEMS) ALL_ID
---------------------------------------- ------------------------
143214143214 b20,b5,b7,b8,b9
没过关,随便找个下列组合就不行:
(a1,a2,a3, a7,a8,a9)
(a1,a4,a5, a7,a10,a11)
(a1,a4,a5, a7,a10,a11)
(a1,a4,a5, a7,a10,a11)
(a3,a5,a6, a9,a11,a12)
|
|