moon_aka_sun: (Default)
[personal profile] moon_aka_sun

http://www.pycontest.net/job/: Subject of the contest is to code the shortest possible python module that converts decimal numbers to the seven-segment display format.

>>> import seven_seg
>>> print seven_seg.seven_seg('0123456789')
 _     _  _     _  _  _  _  _ 
| |  | _| _||_||_ |_   ||_||_|
|_|  ||_  _|  | _||_|  ||_| _|

Постепенно пришёл от первоначальной версии в 209 символов...

def seven_seg(x):
  m=' _ $   $|_|$| |$  |$ _|$|_ '.split('$')
  p=q=r=''
  for d in x:
    s=ord("'a98S?<0 #"[int(d)])-16
    p+=m[s//49]
    q+=m[s//7%7]
    r+=m[s%7]
  return p+"\n"+q+"\n"+r+"\n"
...к 127 символьному однострочнику:

seven_seg=lambda x,j=''.join:j(j(" _    |_| |_ _|"[(ord("HjXYqRO9AD"[int(d)])-41)/i%7*2:][:3]for d in x)+'\n'for i in (49,7,1))

Date: 2006-01-29 09:56 am (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
   NB. Решение на J (практически не моё)
   seven_117=:,"2@:{&(7 3$'    _ |_|  | _||_ | |')@:(|:@:]{&(10 3$(7&#.^:_1)6115893582106107964921726x))@:(-&48@(a.&i.))
   seven_117'0123456789'
 _     _  _     _  _  _  _  _ 
| |  | _| _||_||_ |_   ||_||_|
|_|  ||_  _|  | _||_|  ||_| _|

___________________________________________________________________________________________________


  / Решение на К (моё)
  seven_093:{{,/x,'"\n"}@,'/{3#'(2*7 7 7_vs(-41+_ic"HjXYqRO9AD"[0$x]))_\:" _    |_| |_ _|"}@'x}
  `0:seven_093"0123456789"
 _     _  _     _  _  _  _  _
| |  | _| _||_||_ |_   ||_||_|
|_|  ||_  _|  | _||_|  ||_| _|
  `0:seven_093(,"4") / один символ необходимо "выстроить" в строку

|_|
  |

Date: 2006-02-02 08:49 am (UTC)
From: [identity profile] inv2004.livejournal.com
seven_092:{{,/x}'+((3*!7)_" | _ _||_||_ | |")(0${(!3)_ x}'$87+_ic"Mq0.\231BC\r95")0$'x}

я думаю тут засчёт изменения двух строк можно ещё сократить, хотя для этого хорошо бы написать программу.

а другой вариант пока не получился - 104 получилось только.

PS:
о. только что сообразил немного развернуть функцию:

seven_089:{,/x}'+((3*!7)_" | _ _||_||_ | |")(0${(!3)_ x}'$87+_ic"Mq0.\231BC\r95")0$'

Date: 2006-01-29 05:18 pm (UTC)
From: [identity profile] mtve.livejournal.com
python sucks. 106 in perl. k also rules.

December 2016

S M T W T F S
    123
4 5678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 12th, 2025 01:09 am
Powered by Dreamwidth Studios