41 Востаннє редагувалося ping (12.09.2017 15:13:02)

Re: Задачі в один рядок на Пітоні

Перевірити, чи є задане число числом Капрекара.

Прихований текст

def sol(n):
    return  not all({sum(map(int, (str(n*n)[:x], str(n*n)[x:])), -n)  for x in range(1, len(str(n*n)))})
    
print(sol(296))

ну і , здається , можна умову по правій частині запхати. якщо я правильно її зрозумів

42 Востаннє редагувалося ping (12.09.2017 21:41:03)

Re: Задачі в один рядок на Пітоні

класична задача: FizzBuzz
Write a program that prints the integers from   1   to   n  (inclusive).
But:
          for multiples of three,   print   Fizz     (instead of the number)
          for multiples of five,   print   Buzz     (instead of the number)
          for multiples of both three and five,   print   FizzBuzz     (instead of the number)

def solution(n):
  print <code> 

рішення:

Прихований текст

def sol(n):
    print('\n'.join([{0:'Fizz', 1:'Buzz', 2: 'Fizz Buzz'}[[0,1,2].index(2 if not i%3 and not i%5 else 1 if not i%5 else 0)] if not i%3 or not i%5 else str(i)  for i in range(1, n+1)]))
    
sol(30)

або простіше:

Прихований текст

def sol(n):
    print('\n'.join(['Fizz Buzz' if not i%3 and not i%5 else 'Buzz' if not i%5 else 'Fizz' if not i%3  else str(i)  for i in range(1, n+1)]))

43

Re: Задачі в один рядок на Пітоні

Можна трохи спростити

def sol(n):
    print('\n'.join(['Fizz Buzz' if not i%15 else 'Buzz' if not i%5 else 'Fizz' if not i%3  else str(i)  for i in range(1, n+1)]))

py -3 -m pip install git+https://github.com/snoack/python-goto

44

Re: Задачі в один рядок на Пітоні

koala написав:

Числом Капрекара зветься число, запис квадрату якого можна розкласти на дві частини, сума яких дорівнює цьому числу. Наприклад,
45**2 = 2025, 20+25=45
297**2=88209, 88+209=297
Перевірити, чи є задане число числом Капрекара.

Прихований текст

def solution(n):
    return any(sum(divmod( n**2, 10**i )) == n for i in range(1+2*len(str(n))))

Насправді, це визначення неповне - там ще є уточнення, що права частина не може бути 0. І щось адекватно запхати цю умову у мене поки що не виходить. Звісно, можна обмежити пошук не по range(1+2*len(str(n))), а перевіряти тільки len(str(n)), але щось мені ліньки доводити, що це еквівалентно.

Прихований текст

def solution(n):
    return any(sum(divmod( n**2, 10**i )) == n for i in range(1,len(str(n**2)) if n**2%10**i))

py -3 -m pip install git+https://github.com/snoack/python-goto

45

Re: Задачі в один рядок на Пітоні

code in Python that takes a string s as input and determines the longest substring of s that’s in alphabetical order. In the case where there are two(or more) strings of the same length, code outputs the first in alphabetical order.

sol('f') = 'f'
sol('zopstdabcd') = 'abcd'
sol('azcbobobegghakl') = 'beggh'


рішення:

Прихований текст

def sol(s):
    return sorted([ss for ss in {s[i:i+j+1] for i in range(len(s)+1)  for j in range(len(s)-i)} if all([ss[n] >= ss[n-1]  for n in range(1,len(ss))])], key=lambda x: (1/len(x), x))[0]

46

Re: Задачі в один рядок на Пітоні

Прихований текст

sol=lambda s:[s[a:b] for splits in [[i for i in range(1,len(s)) if s[i-1]>s[i]]] 
    for a,b in (min(map(lambda *a:a, [0]+splits, splits+[len(s)]), 
        key=lambda a:(a[0]-a[1],s[a[0]:a[1]])),)][0]

py -3 -m pip install git+https://github.com/snoack/python-goto