Library dependencies
Statement
Goal
You are given n_imp lines, each representing a library import in Python style. Then, n_dep lines for the dependencies between libraries. Then, step by step you have to:(1) Assess if the code will run successfully as it is. If so, print
(2) If the code doesn't run successfully, find where the first* error is located, print the line
(2.1) If it can be fixed by reordering the imports, find the only order such that at any time, among the possible importable libraries, the smallest (lexicographically) module is chosen.
The format will be, the line:
(2.2) If the error is not salvageable return the message
* The imaginary compiler will import the libraries in the order that they are given by the puzzle until it finds one that requires a library that was not previously imported.
Input
Line 1: An integer n_imp for the number of libraries to import.
Next n_imp lines: A Python-like declaration for a library import.
Next line: An integer n_dep for the number of dependency relation between libraries.
Next n_dep lines: A string representing a dependency relation between libraries.
A dependency relation is given in the format:
libraryrequires library1 [, library2, library3 ... ]
Next n_imp lines: A Python-like declaration for a library import.
Next line: An integer n_dep for the number of dependency relation between libraries.
Next n_dep lines: A string representing a dependency relation between libraries.
A dependency relation is given in the format:
library
Output
The compilation log as defined in the statement, one log message per line.
Constraints
Example
Input
3 import A import B import C 2 B requires A C requires B
Output
Compiled successfully!
Tags
Cycle detection, Dependency Graph, Kahn’s algorithm
Difficulty
Easy
Test cases
1. Successful compilation Test
Input
3
import A
import B
import C
2
B requires A
C requires B
Output
Compiled successfully!
1. Successful compilation val Validator
Input
4
import A
import D
import B
import C
3
B requires A
C requires B
D requires A
Output
Compiled successfully!
2. Fatal error Test
Input
3
import A
import B
import C
3
B requires A
C requires B
A requires C
Output
Import error: tried to import A but C is required.
Fatal error: interdependencies.
2. Fatal error val Validator
Input
4
import A
import B
import C
import D
4
B requires A
C requires B
D requires C
A requires D
Output
Import error: tried to import A but D is required.
Fatal error: interdependencies.
3. Reordering Test
Input
4
import A
import C
import B
import D
2
C requires B, A
D requires B
Output
Import error: tried to import C but B is required.
Suggest to change import order:
import A
import B
import C
import D
3. Reordering val Validator
Input
3
import A
import C
import B
1
C requires B, A
Output
Import error: tried to import C but B is required.
Suggest to change import order:
import A
import B
import C
4. Reordering logic Test
Input
6
import F
import A
import B
import C
import E
import D
2
B requires E
C requires A
Output
Import error: tried to import B but E is required.
Suggest to change import order:
import A
import C
import D
import E
import B
import F
4. Reordering logic val Validator
Input
6
import C
import E
import A
import D
import F
import B
3
B requires E
C requires A, D
F requires B, C
Output
Import error: tried to import C but A is required.
Suggest to change import order:
import A
import D
import C
import E
import B
import F
5. Not lexicographic order but no error Test
Input
3
import C
import A
import B
1
B requires A
Output
Compiled successfully!
5. Not lexicographic order but no error val Validator
Input
4
import C
import A
import B
import D
2
B requires A
D requires B
Output
Compiled successfully!
6. Real fake test 15 libraries 1 Test
Input
15
import requests
import itertools
import random
import functools
import inspect
import sys
import collections
import builtins
import pandas
import unittest
import contextlib
import os
import time
import math
import numpy
10
math requires requests
inspect requires contextlib, os
time requires collections, sys
contextlib requires sys, os
numpy requires os, requests, itertools
pandas requires unittest
itertools requires random, inspect, contextlib
functools requires inspect
builtins requires math
unittest requires contextlib
Output
Import error: tried to import itertools but random is required.
Suggest to change import order:
import collections
import os
import random
import requests
import math
import builtins
import sys
import contextlib
import inspect
import functools
import itertools
import numpy
import time
import unittest
import pandas
6. Real fake test 15 libraries 1 val Validator
Input
15
import sys
import inspect
import requests
import math
import itertools
import random
import contextlib
import unittest
import collections
import builtins
import pandas
import os
import numpy
import time
import functools
7
sys requires unittest
math requires os
time requires contextlib
random requires os
numpy requires contextlib
itertools requires sys
requests requires math
Output
Import error: tried to import sys but unittest is required.
Suggest to change import order:
import builtins
import collections
import contextlib
import functools
import inspect
import numpy
import os
import math
import pandas
import random
import requests
import time
import unittest
import sys
import itertools
7. Real fake test 15 libraries 2 (fatal) Test
Input
15
import sys
import pandas
import os
import unittest
import numpy
import collections
import time
import inspect
import requests
import functools
import math
import builtins
import random
import contextlib
import itertools
9
math requires functools
inspect requires numpy
time requires requests
random requires itertools
functools requires requests
collections requires os
builtins requires functools
requests requires time
unittest requires numpy
Output
Import error: tried to import unittest but numpy is required.
Fatal error: interdependencies.
7. Real fake test 15 libraries 2 (fatal) val Validator
Input
15
import builtins
import numpy
import os
import contextlib
import inspect
import random
import requests
import math
import unittest
import time
import collections
import functools
import itertools
import pandas
import sys
7
sys requires random
numpy requires requests
pandas requires unittest
itertools requires builtins
builtins requires sys
requests requires sys
unittest requires pandas
Output
Import error: tried to import builtins but sys is required.
Fatal error: interdependencies.
8. Real fake test 15 libraries 3 (compiles) Test
Input
15
import collections
import os
import random
import requests
import math
import builtins
import sys
import contextlib
import inspect
import functools
import itertools
import numpy
import time
import unittest
import pandas
10
math requires requests
inspect requires contextlib, os
time requires collections, sys
contextlib requires sys, os
numpy requires os, requests, itertools
pandas requires unittest
itertools requires random, inspect, contextlib
functools requires inspect
builtins requires math
unittest requires contextlib
Output
Compiled successfully!
8. Real fake test 15 libraries 3 (compiles) val Validator
Input
15
import builtins
import collections
import contextlib
import functools
import inspect
import numpy
import os
import math
import pandas
import random
import requests
import time
import unittest
import sys
import itertools
7
sys requires unittest
math requires os
time requires contextlib
random requires os
numpy requires contextlib
itertools requires sys
requests requires math
Output
Compiled successfully!
9. 40 libraries Test
Input
40
import T
import S
import W
import E
import L
import BF
import I
import BB
import O
import U
import M
import BA
import BJ
import BH
import K
import BK
import N
import C
import BN
import D
import BE
import BL
import P
import Z
import R
import J
import A
import H
import F
import BC
import V
import Q
import Y
import BM
import B
import BD
import BI
import G
import BG
import X
24
A requires N, Q
C requires W, Y
D requires BN, H, BE
E requires BE, L, BF
F requires L
G requires BG, A
H requires BC, Y
I requires F, V
J requires BJ, BH, G
K requires X, BN, A
M requires BB, BA
N requires BA
O requires J
Q requires BH
V requires BK, L
W requires BA, X
X requires P, BH
Y requires U, J, G
Z requires P
BB requires Z, D, BF
BD requires P, B
BI requires X, I
BL requires A, G, BE
BM requires N
Output
Import error: tried to import W but BA is required.
Suggest to change import order:
import B
import BA
import BC
import BE
import BF
import BG
import BH
import BJ
import BK
import BN
import L
import E
import F
import N
import BM
import P
import BD
import Q
import A
import G
import BL
import J
import O
import R
import S
import T
import U
import V
import I
import X
import BI
import K
import W
import Y
import C
import H
import D
import Z
import BB
import M
9. 40 libraries val Validator
Input
40
import X
import BG
import BD
import Y
import T
import K
import BH
import J
import Q
import E
import V
import Z
import N
import B
import BM
import BC
import W
import BA
import D
import BL
import A
import G
import BK
import BI
import BF
import BE
import F
import L
import BB
import BN
import M
import I
import P
import C
import R
import H
import O
import BJ
import S
import U
31
A requires BC, BH
B requires L, BD, X
C requires BI
D requires V, Q, K
E requires Y
F requires BL, L
G requires K
H requires P
I requires L
K requires W, I, E
M requires BI, U
O requires M, Y
Q requires BE, BJ, BL
T requires H, BI
U requires BI, I
X requires BN, O
Y requires BH
Z requires A, D
BA requires L
BB requires BC, B, Y
BC requires D, X
BD requires X, D
BF requires L
BG requires O, J
BH requires H
BI requires J, H, BF
BJ requires M, E
BK requires BC, BM
BL requires U
BM requires O
BN requires U, F
Output
Import error: tried to import X but BN is required.
Suggest to change import order:
import BE
import J
import L
import BA
import BF
import I
import N
import P
import H
import BH
import BI
import C
import R
import S
import T
import U
import BL
import F
import BN
import M
import V
import W
import Y
import E
import BJ
import K
import G
import O
import BG
import BM
import Q
import D
import X
import BC
import A
import BD
import B
import BB
import BK
import Z
10. Max size in codingame Test
Input
93
import BV
import BE
import Q
import X
import CW
import DF
import BJ
import H
import CS
import BS
import BG
import BW
import D
import CF
import U
import DD
import CC
import BO
import BR
import BY
import CJ
import F
import DH
import R
import CT
import BH
import CX
import CY
import BM
import DC
import DM
import BU
import CN
import DA
import M
import O
import BF
import CU
import CQ
import CE
import BK
import DK
import V
import CA
import BX
import CH
import W
import CI
import C
import CZ
import K
import CV
import CK
import S
import BI
import CR
import BA
import J
import DJ
import L
import DB
import BP
import N
import CD
import BT
import CM
import BQ
import I
import Z
import E
import DO
import B
import CL
import DL
import G
import P
import BB
import DI
import BN
import CG
import DE
import Y
import BD
import DG
import CP
import T
import DN
import CB
import BC
import BZ
import BL
import A
import CO
66
A requires BW, Z, CA
B requires BD
C requires DD, BM, CL
D requires CV, DJ, BD
G requires BO
H requires B
I requires DC, F, BH
J requires DI, A
K requires DB, E, CY
L requires CM
M requires DD, BT, DL
O requires DM, Q
P requires L, BD, BT
Q requires L, CU, CO
R requires BI, CW
S requires DK, BN
T requires BI, F, CC
U requires BH, T, BZ
V requires DI, Q
W requires BT, CT, DB
X requires CD, BO, BM
Z requires BY, CS
BA requires BB
BB requires CH, L
BC requires CO, BV
BG requires CI, CA
BH requires DG, BB
BI requires BJ
BJ requires CK, BH, CQ
BK requires BW, CI, DL
BL requires Y, DE
BN requires DF, CI, Y
BO requires CE
BP requires CI
BQ requires CA, CT
BS requires CU
BU requires BR, Z, CD
CA requires E, BZ
CB requires BD, E, Q
CC requires CM
CD requires BH, A
CF requires DO, BJ
CG requires O, BX, BO
CH requires J
CL requires BA, Z, D
CM requires DD, DE, CJ
CN requires BH
CO requires BR
CQ requires O
CR requires BV, DE, DA
CT requires Z
CU requires BV
CV requires DM
CW requires CA
CY requires DI, BX, Z
CZ requires DO, CU, F
DB requires BU, CZ, R
DD requires BZ
DE requires N, CW
DF requires M, BF
DG requires CU, DK, DM
DH requires DN, BK
DI requires Z
DJ requires CF, W
DK requires F, CE, BE
DO requires CQ
Output
Import error: tried to import Q but L is required.
Suggest to change import order:
import BD
import B
import BE
import BF
import BM
import BR
import BT
import BV
import BW
import BX
import BY
import BZ
import CE
import BO
import CI
import BP
import CJ
import CK
import CO
import BC
import CP
import CS
import CU
import BS
import CX
import DA
import DC
import DD
import DL
import BK
import DM
import CV
import DN
import DH
import E
import CA
import BG
import CW
import F
import DK
import DG
import G
import H
import M
import DF
import N
import DE
import CM
import CC
import CR
import L
import P
import Q
import CB
import O
import CG
import CQ
import DO
import CZ
import Y
import BL
import BN
import S
import Z
import A
import CT
import BQ
import DI
import CY
import J
import CH
import BB
import BA
import BH
import BJ
import BI
import CD
import BU
import CF
import CN
import I
import R
import DB
import K
import T
import U
import V
import W
import DJ
import D
import CL
import C
import X
10. Max size in codingame val Validator
Input
93
import G
import DL
import BN
import H
import Z
import DM
import D
import BO
import S
import BX
import BK
import CS
import J
import DG
import DF
import BA
import CZ
import O
import BQ
import C
import BM
import BW
import P
import CR
import DC
import K
import CV
import CH
import N
import DA
import CC
import M
import BY
import R
import BU
import DH
import CP
import E
import BD
import CN
import BS
import CF
import CW
import Q
import DI
import BF
import DJ
import CD
import BG
import CE
import BP
import CM
import U
import BL
import CL
import BE
import DD
import CX
import CT
import CY
import BV
import CJ
import CI
import BJ
import Y
import BH
import X
import L
import CO
import DB
import B
import BZ
import DO
import BC
import T
import I
import DN
import CG
import CA
import BR
import BB
import CU
import A
import CK
import CQ
import BI
import V
import DE
import DK
import BT
import W
import CB
import F
71
A requires CN
B requires DG, CT
E requires BX, J
F requires BT
G requires L, CS, BE
H requires CV, CF, DJ
I requires BE
M requires D, BX, A
O requires DC
P requires DM, DI
Q requires DI, BH, O
R requires DA
U requires BK
V requires C
W requires CY
X requires BM, BW, O
Y requires CZ, CY, J
Z requires BO, CU
BA requires CS, BC
BB requires BU, DO
BD requires CQ
BF requires K, X, Z
BG requires BH, F, BP
BI requires DL, DM, X
BJ requires CB, O, CP
BK requires CJ, DL, CN
BM requires DC
BN requires DD
BO requires BX, CN, BD
BQ requires CP, DF, CK
BR requires DD
BT requires DO, U, Y
BU requires CI, BS
BV requires DM
BX requires D, CH, BS
BY requires DG
BZ requires CB
CA requires W
CC requires CD, Y
CD requires CF
CE requires CX
CF requires DD, CU
CG requires BX
CH requires CB, DJ
CI requires X, BS
CL requires BL, BU
CM requires DC, BD, BN
CN requires DE
CO requires CY, BN, BW
CP requires CY, BZ
CR requires CN, Q, R
CS requires M, DB, DC
CT requires BF
CU requires A, S
CV requires G, BK
CW requires CA
CX requires K, BD
CZ requires CG
DA requires CL, BF, CB
DC requires CG
DD requires DL, BG, BU
DE requires CA, S
DF requires N
DG requires BC, BL
DH requires L
DI requires D, BL, CL
DJ requires CK, I
DK requires DB, CV, H
DL requires W, BU
DM requires CF
DO requires C
Output
Import error: tried to import G but L is required.
Suggest to change import order:
import BC
import BE
import BH
import BL
import BP
import BS
import BW
import C
import CB
import BZ
import CJ
import CK
import CQ
import BD
import CY
import CP
import D
import DB
import DG
import BY
import DN
import DO
import I
import DJ
import CH
import BX
import CG
import CZ
import DC
import BM
import J
import E
import K
import CX
import CE
import L
import DH
import N
import DF
import BQ
import O
import BJ
import S
import T
import V
import W
import CA
import CW
import DE
import CN
import A
import BO
import CU
import M
import CS
import BA
import G
import X
import CI
import BU
import BB
import CL
import DI
import DL
import BK
import CV
import Q
import U
import Y
import BT
import F
import BG
import DD
import BN
import BR
import CF
import CD
import CC
import CM
import CO
import DM
import BI
import BV
import H
import DK
import P
import Z
import BF
import CT
import B
import DA
import R
import CR
11. Extra 1 Test
Input
10
import J
import H
import D
import A
import I
import C
import B
import F
import G
import E
5
A requires F, J, E
D requires H
E requires J, F
G requires A, I, H
J requires H, G
Output
Import error: tried to import J but H is required.
Fatal error: interdependencies.
11. Extra 1 val Validator
Input
10
import JJ
import HH
import DD
import AA
import II
import CC
import BB
import FF
import GG
import EE
5
AA requires FF, JJ, EE
DD requires HH
EE requires JJ, FF
GG requires AA, II, HH
JJ requires HH, GG
Output
Import error: tried to import JJ but HH is required.
Fatal error: interdependencies.
12. Extra 2 Test
Input
10
import I
import A
import D
import C
import G
import H
import B
import F
import E
import J
9
A requires H
B requires G
C requires D
D requires J
E requires I, G
G requires I, F
H requires J
I requires F
J requires I
Output
Import error: tried to import I but F is required.
Suggest to change import order:
import F
import I
import G
import B
import E
import J
import D
import C
import H
import A
12. Extra 2 val Validator
Input
10
import II
import AA
import DD
import CC
import GG
import HH
import BB
import FF
import EE
import JJ
9
AA requires HH
BB requires GG
CC requires DD
DD requires JJ
EE requires II, GG
GG requires II, FF
HH requires JJ
II requires FF
JJ requires II
Output
Import error: tried to import II but FF is required.
Suggest to change import order:
import FF
import II
import GG
import BB
import EE
import JJ
import DD
import CC
import HH
import AA
Solution language
Solution
Stub generator input