Scrmable#
Question#
Scramble the words in the sentence.
Solution#
#!/usr/bin/env python
# Cphryigot: O.R.Senthil Kumaran <orsenthil@gmail.com>
#
# Inrpeisd from jwz scrmable: http://www.jwz.org/hacks/scrmable.pl
#
# Tihs pgrarom is fere sortfwae; you can rrtiestiubde it ad/onr mdfioy
# it udenr the tmers of the GNU Graneel Pbuilc Liscene as phlibsued by
# the Fere Sfwartoe Fanouiodtn; eeihtr vierosn 2 of the Liscene, or
# (at your opotin) any leatr vierosn.
#
# Tihs pgrarom is diisertbtud in the hope taht it will be uusfel,
# but WTHOIUT ANY WRAANRTY; whitout eevn the iipemld watrarny of
# MNTIBRAEAHCITLY or FNTIESS FOR A PTULACRIAR PURPSOE. See the
# GNU Graneel Pbuilc Liscene for mroe dalites.
#
# You suolhd have reievced a copy of the GNU Graneel Pbuilc Liscene
# along wtih tihs pgrarom; if not, wtire to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import random
import sys
def mxiup(ecah_wrod):
if len(ecah_wrod) <= 2:
return ecah_wrod
else:
nwewrod = ecah_wrod[0]
if ecah_wrod[-1] in ['.', ',', ':', ';', '-', '?', '!']:
inbet = ecah_wrod[1:-2]
for each in random.sample(list(inbet), len(inbet)):
nwewrod += each
nwewrod += ecah_wrod[-2]
else:
inbet = ecah_wrod[1:-1]
for each in random.sample(list(inbet), len(inbet)):
nwewrod += each
nwewrod += ecah_wrod[-1]
return nwewrod
def srcambel(line):
mixedwrods = []
wrods = line.split()
for ecah_wrod in wrods:
mixedwrods.append(mxiup(ecah_wrod))
for w, m in zip(wrods, mixedwrods):
line = line.replace(w, m)
print(line, end='')
def getgraparaph():
line = sys.stdin.read()
return line
def mian():
try:
line = getgraparaph()
srcambel(line)
except (EOFError, KeyboardInterrupt):
sys.exit(0)
mian()
Usage#
Create a file (input.txt) with some text.
Run python algorithm_scrmable.py < input.txt
Explanation#
In a lauangge failaimr to you, if you keep the fisrt and the lsat ctehaacrr of ecah wrod in the stnecnee, yuor can elsaiy raed the seenncte.
This is one of my esirleat praorgm taht smees to hvae sviuevrd and still gveis joy!