type Bukvi = [Bukva]
type Cifri = [Cifra]
hitriyPerevorot :: Stroka -> Stroka
hitriyPerevorot stroka = zapolnitPropuski spisokBukvSPropuskamiVmestoCifr perevernutieCifri where
zapolnitPropuski :: Bukvi -> Cifri -> Stroka
zapolnitPropuski bukvi
"" = concat bukvi
zapolnitPropuski ("" : bukvi) (cifra : cifri) = cifra : zapolnitPropuski bukvi cifri
zapolnitPropuski (bukva : bukvi) cifri = bukva ++ zapolnitPropuski bukvi cifri
zapolnitPropuski
[] cifri
= error $ "Takogo ne mojet byt'! Lishnie cifri: " ++ cifri
perevernutieCifri :: Cifri
spisokBukvSPropuskamiVmestoCifr :: Bukvi
spisokBukvSPropuskamiVmestoCifr
= map (\x
-> if isDigit x
then [] else [x
]) stroka
main = do
let str = "1аб2в345г6де78"
aW1wb3J0IERhdGEuQ2hhcgoKdHlwZSBCdWt2YSA9IFtDaGFyXQp0eXBlIEJ1a3ZpID0gW0J1a3ZhXQp0eXBlIFN0cm9rYSA9IFtDaGFyXQp0eXBlIENpZnJhID0gQ2hhcgp0eXBlIENpZnJpID0gW0NpZnJhXQoKaGl0cml5UGVyZXZvcm90IDo6IFN0cm9rYSAtPiBTdHJva2EKaGl0cml5UGVyZXZvcm90IHN0cm9rYSA9IHphcG9sbml0UHJvcHVza2kgc3Bpc29rQnVrdlNQcm9wdXNrYW1pVm1lc3RvQ2lmciBwZXJldmVybnV0aWVDaWZyaSB3aGVyZQogICAgemFwb2xuaXRQcm9wdXNraSA6OiBCdWt2aSAtPiBDaWZyaSAtPiBTdHJva2EKICAgIHphcG9sbml0UHJvcHVza2kgYnVrdmkgIiIgPSBjb25jYXQgYnVrdmkKICAgIHphcG9sbml0UHJvcHVza2kgKCIiIDogYnVrdmkpIChjaWZyYSA6IGNpZnJpKSA9IGNpZnJhIDogemFwb2xuaXRQcm9wdXNraSBidWt2aSBjaWZyaQogICAgemFwb2xuaXRQcm9wdXNraSAoYnVrdmEgOiBidWt2aSkgY2lmcmkgPSBidWt2YSArKyB6YXBvbG5pdFByb3B1c2tpIGJ1a3ZpIGNpZnJpCiAgICB6YXBvbG5pdFByb3B1c2tpIFtdIGNpZnJpID0gZXJyb3IgJCAiVGFrb2dvIG5lIG1vamV0IGJ5dCchIExpc2huaWUgY2lmcmk6ICIgKysgY2lmcmkKICAgIHBlcmV2ZXJudXRpZUNpZnJpIDo6IENpZnJpCiAgICBwZXJldmVybnV0aWVDaWZyaSA9IHJldmVyc2UgJCBmaWx0ZXIgaXNEaWdpdCBzdHJva2EKICAgIHNwaXNva0J1a3ZTUHJvcHVza2FtaVZtZXN0b0NpZnIgOjogQnVrdmkKICAgIHNwaXNva0J1a3ZTUHJvcHVza2FtaVZtZXN0b0NpZnIgPSBtYXAgKFx4IC0+IGlmIGlzRGlnaXQgeCB0aGVuIFtdIGVsc2UgW3hdKSBzdHJva2EKCm1haW4gPSBkbwogICAgbGV0IHN0ciA9ICIx0LDQsTLQsjM0NdCzNtC00LU3OCIKICAgIHB1dFN0ckxuIHN0cgogICAgcHV0U3RyTG4gJCBoaXRyaXlQZXJldm9yb3Qgc3Ry