0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
def calc ( x ) :
if type ( x ) is not list :
return x
if len ( x ) == 0 :
return x
while type ( x [ 0 ] ) is list :
x = x [ 0 ] + x [ 1: ]
c = x [ 0 ]
print ( x )
if c == 'I' :
if len ( x ) <= 1 :
return x
return calc ( x [ 1: ] )
elif c == 'K' :
if len ( x ) <= 2 :
return x
return calc ( [ x[1] ] + x [ 3: ] )
elif c == 'W' :
if len ( x ) <= 2 :
return x
return calc ( x[1:3] + x[ 2: ] )
elif c == 'S' :
if len ( x ) <= 3 :
return x
return calc ( [ x[1] , x [3] , [ x[2] , x[3] ] ] + x [ 4: ] )
elif c == 'B' :
if len ( x ) <= 3 :
return x
return calc ( [ x[1] , [ x[2] , x[3] ] ] + x[4:] )
elif c == 'C' :
if len ( x ) <= 3 :
return x
return calc ( [ x[1] , x[3] , x[2] ] + x[ 4 : ] )
return [ c ] + calc ( x [ 1: ] )
def parse ( s , n = 0 ) :
res = []
i = n
while i < len ( s ) :
if s [ i ] == '(' :
t = parse ( s , i + 1 )
res.append ( t [ 0 ] )
i = t [ 1 ] - 1
elif s [ i ] == ')' :
return ( res , i + 1 )
else :
res.append ( s [ i ] )
i += 1
return ( res , i )
print ( '>> ' , end = '' )
while True :
for i in calc ( parse ( input() ) [ 0 ] ) :
print ( i , end = '' )
print ( '\n>> ' , end = '' )
Вычисляэ комбинаторныэ термы, и выдаё промежности, типа:
>> S(SKK)(SKK)x
['S', ['S', 'K', 'K'], ['S', 'K', 'K'], 'x']
['S', 'K', 'K', 'x', [['S', 'K', 'K'], 'x']]
['K', 'x', ['K', 'x'], [['S', 'K', 'K'], 'x']]
['x', [['S', 'K', 'K'], 'x']]
['S', 'K', 'K', 'x']
['K', 'x', ['K', 'x']]
['x']
xx
Запостил: yet_another_one_shit,
16 Апреля 2018
I_AM_SHIT 15.04.2018 15:30 # −1
yet_another_one_shit 16.04.2018 17:06 # −1
yet_another_one_shit 17.04.2018 06:31 # −1
AnalDaddy 17.04.2018 06:48 # −2
yet_another_one_shit 17.04.2018 06:52 # −2
666_N33D135 23.07.2018 16:41 # 0
guest8 23.07.2018 17:09 # −999
guest8 23.07.2018 17:10 # −999
666_N33D135 23.07.2018 17:18 # 0
ЗЫ. print из функции calc можно убрать, он отладочный.
guest8 23.07.2018 17:11 # −999
666_N33D135 23.07.2018 17:12 # 0
guest8 23.07.2018 17:13 # −999
guest8 23.07.2018 17:25 # −999
guest8 23.07.2018 17:35 # −999
guest8 23.07.2018 17:46 # −999
guest8 23.07.2018 17:48 # −999
guest8 23.07.2018 17:59 # −999
guest8 23.07.2018 19:04 # −999
CHayT 23.07.2018 17:36 # 0
666_N33D135 23.07.2018 17:39 # 0
***
Но всё равно, этот код – говно.
guest8 23.07.2018 18:25 # −999
666_N33D135 23.07.2018 18:27 # 0
guest8 23.07.2018 18:32 # −999
666_N33D135 23.07.2018 17:44 # +1
guest8 23.07.2018 18:14 # −999
666_N33D135 23.07.2018 18:26 # 0
Помоему тут баг, комбинаторы же применяются только когда они в начале выражения(если не ошибаюсь). Можно исправить, но тогда им будет неинтересно коверкать слова.
guest8 23.07.2018 18:31 # −999
guest8 23.07.2018 19:09 # −999
666_N33D135 23.07.2018 19:17 # +1
Споки-ноки!
guest8 23.07.2018 19:23 # −999
666_N33D135 23.07.2018 19:43 # 0
guest8 23.07.2018 21:21 # −999
guest8 23.07.2018 22:29 # −999
guest8 23.07.2018 22:42 # −999
guest8 23.07.2018 23:50 # −999
guest8 24.07.2018 00:26 # −999
gost 15.03.2020 19:25 # +1
KOTuK 15.03.2020 19:28 # +1
3.14159265 15.03.2020 23:41 # 0
Спасибо за бамп.