Skip to main content
We’ve updated our Terms of Service. A new AI Addendum clarifies how Stack Overflow utilizes AI interactions.
Code Golf

Return to Answer

added 14 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) (削除) 1635 (削除ここまで) 1613(削除) 1613 (削除ここまで) 1596 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s=[(k,[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))])for k in[C[x]for x,V in W(a)if V==M(a)]]
H=[]
R=0
for k,_ in s:R=M(J(_),R);_.sort(key=T(k[0]));a=sum([list(S(o(k))-S(_))for k in _],[]);H+=zip(p(lambda a:Z((a,_)).index(2),a),p(Z,[(O,[x for x in S(v)-S(_)if z((x,O),_)<J(v)])for O in a])),
X=n(R)
U=any(H)
if U:H=[h forH=G([[h[0]for h in Q]for Q in H if J(hQ)==M(p(J,H))];H=G([[h[0]for h in Q]for Q in H]]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online! Try it online!

-79 bytes thanks to Jonathan Frech
-119 bytes thanks to NieDzejkob
-17 bytes thanks to ovs

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) (削除) 1635 (削除ここまで) 1613 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s=[(k,[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))])for k in[C[x]for x,V in W(a)if V==M(a)]]
H=[]
R=0
for k,_ in s:R=M(J(_),R);_.sort(key=T(k[0]));a=sum([list(S(o(k))-S(_))for k in _],[]);H+=zip(p(lambda a:Z((a,_)).index(2),a),p(Z,[(O,[x for x in S(v)-S(_)if z((x,O),_)<J(v)])for O in a])),
X=n(R)
U=any(H)
if U:H=[h for h in H if J(h)==M(p(J,H))];H=G([[h[0]for h in Q]for Q in H]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online!

-79 bytes thanks to Jonathan Frech
-119 bytes thanks to NieDzejkob

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) (削除) 1635 (削除ここまで) (削除) 1613 (削除ここまで) 1596 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s=[(k,[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))])for k in[C[x]for x,V in W(a)if V==M(a)]]
H=[]
R=0
for k,_ in s:R=M(J(_),R);_.sort(key=T(k[0]));a=sum([list(S(o(k))-S(_))for k in _],[]);H+=zip(p(lambda a:Z((a,_)).index(2),a),p(Z,[(O,[x for x in S(v)-S(_)if z((x,O),_)<J(v)])for O in a])),
X=n(R)
U=any(H)
if U:H=G([[h[0]for h in Q]for Q in H if J(Q)==M(p(J,H))]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online!

-79 bytes thanks to Jonathan Frech
-119 bytes thanks to NieDzejkob
-17 bytes thanks to ovs

deleted 3 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) (削除) 1635 (削除ここまで) 16181613 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s=[(k,[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))])for k in[C[x]for x,V in W(a)if V==M(a)]]
H=[]
R=0
for k,_ in s:R=M(J(_),R);_.sort(key=T(k[0]));a=sum([list(S(o(k))-S(_))for k in _],[]);H+=zip(*[pp(lambda a:Z((a,_)).index(2),a)]+[p,p(Z,[(O,[x for x in S(v)-S(_)if z((x,O),_)<J(v)])for O in a])]),
X=n(R)
U=any(H)
if U:H=[h for h in H if J(h)==M(p(J,H))];H=G([[h[0]for h in Q]for Q in H]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online! Try it online!

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) (削除) 1635 (削除ここまで) 1618 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s=[(k,[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))])for k in[C[x]for x,V in W(a)if V==M(a)]]
H=[]
R=0
for k,_ in s:R=M(J(_),R);_.sort(key=T(k[0]));a=sum([list(S(o(k))-S(_))for k in _],[]);H+=zip(*[p(lambda a:Z((a,_)).index(2),a)]+[p(Z,[(O,[x for x in S(v)-S(_)if z((x,O),_)<J(v)])for O in a])]),
X=n(R)
U=any(H)
if U:H=[h for h in H if J(h)==M(p(J,H))];H=G([[h[0]for h in Q]for Q in H]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online!

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) (削除) 1635 (削除ここまで) 1613 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s=[(k,[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))])for k in[C[x]for x,V in W(a)if V==M(a)]]
H=[]
R=0
for k,_ in s:R=M(J(_),R);_.sort(key=T(k[0]));a=sum([list(S(o(k))-S(_))for k in _],[]);H+=zip(p(lambda a:Z((a,_)).index(2),a),p(Z,[(O,[x for x in S(v)-S(_)if z((x,O),_)<J(v)])for O in a])),
X=n(R)
U=any(H)
if U:H=[h for h in H if J(h)==M(p(J,H))];H=G([[h[0]for h in Q]for Q in H]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online!

deleted 40 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) 1635(削除) 1635 (削除ここまで) 1618 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s={s=[(k:,[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))]for])for k in[C[x]for x,V in W(a)if V==M(a)]}]]
H=[]
R=0
for wk,_ in s:R=M(J(s[w]_),R);s[w];_.sort(key=T(w[0]k[0]));a=sum([list(S(o(k))-S(s[w]_))for k in s[w]]_],[]);H+=zip(*[p(lambda a:Z((a,s[w]_)).index(2),a)]+[p(Z,[(O,[x for x in S(v)-S(s[w]_)if z((x,O),s[w]_)<J(v)])for O in a])]),
X=n(R)
U=any(H)
if U:H=[h for h in H if J(h)==M(p(J,H))];H=G([[h[0]for h in Q]for Q in H]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online! Try it online!

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) 1635 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s={k:[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))]for k in[C[x]for x,V in W(a)if V==M(a)]}
H=[]
R=0
for w in s:R=M(J(s[w]),R);s[w].sort(key=T(w[0]));a=sum([list(S(o(k))-S(s[w]))for k in s[w]],[]);H+=zip(*[p(lambda a:Z((a,s[w])).index(2),a)]+[p(Z,[(O,[x for x in S(v)-S(s[w])if z((x,O),s[w])<J(v)])for O in a])]),
X=n(R)
U=any(H)
if U:H=[h for h in H if J(h)==M(p(J,H))];H=G([[h[0]for h in Q]for Q in H]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online!

Python 2, (削除) 1876 (削除ここまで) (削除) 1871 (削除ここまで) (削除) 1870 (削除ここまで) (削除) 1859 (削除ここまで) (削除) 1846 (削除ここまで) (削除) 1830 (削除ここまで) (削除) 1826 (削除ここまで) (削除) 1900 (削除ここまで) (削除) 1932 (削除ここまで) (削除) 1913 (削除ここまで) (削除) 1847 (削除ここまで) (削除) 1833 (削除ここまで) (削除) 1635 (削除ここまで) 1618 bytes

s=input().split('\n')
W=enumerate
J=len
Y=sorted
l=J(s[0])
s=''.join(s)
S=set
M=max
A=min
p=map
f=lambda k:[(x/l,x%l)for x,V in W(s)if V==k]
g=lambda x,i,h=lambda x,i,j:x[:i]+(x[i]+j,)+x[i+1:]:[(h(q,i,-1),h(q,i,1))for q in x]
v=f('C');e=g(f('-'),1)+g(f('|'),0)
E=[V for V in v if sum(e,()).count(V)==1]
o=lambda v:[E[~E.index(v)]for E in e if v in E]
T=lambda a:lambda b:z((a,b))
Z=lambda a:p(T(a[0]),a[1])
n=lambda R:'mepbphhondudetrueeeco nothotnxptn ddh p t t'[R-1::12].strip()+(R>9)*'ec'
G=lambda K:[H[i]for i,V in W(K)if V==A(K)]
q=lambda x:[`k[0]`for k in H if k[1]==x]
B='-'.join
def z(n,c=[]):k=[x for x in S(o(n[0]))-S(c)];p=[z((j,n[1]),c+k)for j in k];return 1-~-(n[0]==n[1])*(p and A(p)or J(v))
C=[(a,b)for a in E for b in E]
a=p(z,C)
s=[(k,[E for E in v if~-z((k[0],E))+z((k[1],E))==z((k[0],k[1]))])for k in[C[x]for x,V in W(a)if V==M(a)]]
H=[]
R=0
for k,_ in s:R=M(J(_),R);_.sort(key=T(k[0]));a=sum([list(S(o(k))-S(_))for k in _],[]);H+=zip(*[p(lambda a:Z((a,_)).index(2),a)]+[p(Z,[(O,[x for x in S(v)-S(_)if z((x,O),_)<J(v)])for O in a])]),
X=n(R)
U=any(H)
if U:H=[h for h in H if J(h)==M(p(J,H))];H=G([[h[0]for h in Q]for Q in H]);K=[[J(Q[1])for Q in j]for j in H];H=[H[i]for i,V in W(K)if A(V)==A(sum(K,[]))];K=[J([Q[1]for Q in j if J(S(Q[1]))-J(Q[1])])for j in H];H=[[p[0]+1,n(M(p[1]))+[['isopropyl','butyl-tert','butyl-sec','isobutyl'][J(p[1])+p[1].count(3)-3],'yl'][Y(p[1])==range(1,1+M(p[1]))]]for p in G(K)[0]]
print(U and B([','.join(q(x))+'-'+'dttphhondireeeecoe itnxptnc rtataaa aa a '[J(q(x))-2::9].strip()+B(x.split('-')[::-1])for x in Y(list(S(zip(*H)[1])))])+X or[X,'meth']['t'==X])+'ane'

Try it online!

deleted 3 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
edited body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
deleted 328 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
deleted 1 character in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 56 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 10 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 10 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 21 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 11 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 10 characters in body
Source Link
hyperneutrino
  • 42.8k
  • 5
  • 72
  • 227
Loading
Bounty Awarded with 100 reputation awarded by Peter Lenkefi
deleted 1858 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 1548 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 185 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 1731 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
edited body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 187 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
deleted 13 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
deleted 13 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
deleted 11 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
deleted 1 character in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
added 68 characters in body
Source Link
user42649
  • 42.8k
  • 5
  • 72
  • 227
Loading
1
2

AltStyle によって変換されたページ (->オリジナル) /