Attachment 'NOCamelCase.py'

Download

   1 #!/usr/bin/env python
   2 # coding: utf
   3 '''
   4 По мнению Петра, сообщение является красивым, если любая прописная буква стоит левее любой строчной. Иными словами это правило описывает строки, в которых сначала идет ноль или более прописных букв, а затем — ноль или более строчных. Для приведения письма в красивый вид Петр может замазать некоторую букву и записать эту же букву в этом же месте в противоположном регистре (строчную букву заменить на прописную и наоборот). Петр заинтересовался вопросом — какое наименьшее число действий необходимо, чтобы привести письмо в красивый вид. Одним действием будет считать смену регистра буквы в письме. Никаких других действий Петр совершать не может.
   5 
   6 Входные данные. В единственной строке входных данных содержится непустая строка из строчных и прописных латинских букв. Длина строки не превосходит 10**5.
   7 
   8 Выходные данные. Выведите единственное число — наименьшее число действий, необходимое, чтобы письмо стало красивым.
   9 '''
  10 import sys
  11 
  12 if len(sys.argv)>1: # Генератор
  13     import random
  14     alp="".join([chr(i) for i in range(ord('A'),ord('Z')+1)+range(ord('a'),ord('z')+1)])
  15     print "".join((random.choice(alp) for i in xrange(int(sys.argv[1]))))
  16     sys.exit(0)
  17 
  18 S=map(str.isupper,raw_input())
  19 
  20 def Clean(S):       # Проверочная функуия
  21     N=S.count(True)
  22     T,F,m=N,0,N
  23     for l in S:
  24         if l: T-=1
  25         else: F+=1
  26         m=min(m,F+T)
  27     return m
  28 
  29 def Funclean(S):    # Решение в одну строку!
  30     return reduce(lambda (m,t,f), e: e and (min(m,t-1+f),t-1,f) or (m,t,f+1), S, [S.count(True)]*2+[0])[0]
  31 
  32 print Clean(S)
  33 print Funclean(S)

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.

You are not allowed to attach a file to this page.