Pull to refresh

Comments 23

в 7 или 8 классе такое делал на паскале, надо было для какой-то задачки с финала ACM какого-то года :)
любил я их сам писать после публикации, конечно не так быстро получалось как у людей участвовавших.
Какой ужас! Про программы математической алгебры не слышали? Вот, например, Sage.

sage: a=ZZ(0x263862837FFAAAAABBBBB2137918623816237612931628312FF)
sage: a.digits(2)
[1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1]
sage: b=a.digits(2)
sage: a==ZZ(b,2)
True


sage: a.digits ?
Definition:     a.digits(self, base=10, digits=None, padto=0)
Docstring:
       Return a list of digits for "self" in the given base in little
       endian order.
    
       The returned value is unspecified if self is a negative number and
       the digits are given.
    
       INPUT:
    
       * "base" - integer (default: 10)
    
       * "digits" - optional indexable object as source for the digits
    
       * "padto" - the minimal length of the returned list, sufficient
         number of zeros are added to make the list minimum that length
         (default: 0)
На мой взгляд, это менее удобно, чем мое решение.
Менее удобней? Да уже все готово, бери и пользуйся. Любая система исчисления, в любую сторону. Куда ещё удобней?
У меня есть фал, содержащий 50000 строк, каждая строка имеет размер порядка 1000-2000 символов. Каждую четную строку нужно перевести в двоичную систему, итоговое значение четных строк объединить в одну и перевести в 30-ю систему.
На C++ за 10 минут можно навоять программу для реализации. А как проделать такое в Sage, я не знаю, да и неинтересно…
А вот возможности руби заинтересовали.
Так так бы сразу и сказали, что не интересно. Вот мой вариант, не более 3-х минут от и до (всего 5 строчек).

#!/usr/bin/env sage

m=[
111223,
1231,
123123123,
123123123,
12312312
]

all=[]

for i,j in enumerate(m):
    if i%2 == 0:
        all.append(ZZ(j).digits(2))

print ZZ(flatten(all),2).digits(30)


Вместо m вставляйте ваши 2000 строк и будет счастье. Sage — расширенный python. Ruby — язык программирования, а Sage — система компьютерной алгебры.
Если есть способ подгрузить в m данные из файла, со соглашусь. Если нет, то придется либо вручную вбивать строчки(как минимум разделить их ','), либо прибегнуть к программированию и сформировать пригодный для вставки массив.
«Вот, сынок, чем люди занимаются, когда у них Полароида нету...» :)

t1 = 'abcdf'.to_i(16) # => 703711
t2 = t1.to_s(2) # => «10101011110011011111»
t3 = t1.to_s(36) # => «f2zj»
А, скажем, 'abcbcbabdbcbabcdbacbda123c213b213f5d4678c879b980c980a456c324d123b532fc456abd67f567bca45b3cdfbcafbcacfb' руби осилит?
Хотя JS осилил. Вышло «4.436203976695893e+122». А вот следующее уже не осилил:
'abcbcbabdbcbabcdbacbda123c213b213f5d4678c879b980c980a456c324d123b532fc456abd67f567bca45b3cdfbcafbcacfbabcbcbabdbcbabcdbacbda123c213b213f5d4678c879b980c980a456c324d123b532fc456abd67f567bca45b3cdfbcafbcacfbabcbcbabdbcbabcdbacbda123c213b213f5d4678c879b980c980a456c324d123b532fc456abd67f567bca45b3cdfbcafbcacfb'
Запости целиком как-нить, попробуем в руби :)
Дык я запостил) Идея, приблизительно, в следующем:
var string = '';

for (var i = 400; i--;) {
  string += ['a','b','c','d','e','f'].random;
}

parseInt( string, 16 );
В руби, короче, безразмерные числа. Там всё прокатит (если в память влезет)
Ну там ж песочница. Моя машина задумывается на полсекунды.
Раньше никогда не сталкивался с руби, был приятно удивлен возможностями.
Разумеется.

443620397669589313334520641725783763403579017959278642637680030795624997202312502057807412509746590860705272366993730481403

Что не делают люди лишь бы не знать про bc
>>this->iriginal = original;

Не занудства ради, просто интересно, но почему iriginal?
О ужас!) Это я опечатался, а автоматическое дополнение кода сделало свое дело.
У меня такое ощущение, что в Urban Dictionary можно найти определение для вообще любой очепятки.
Я не хочу никого обидеть — строить велосипеды очень полезно для саморазвития. Но всё же как линукс спасает от создания велосипедов:
(echo 10 i 2 o; cat input.txt; echo p) | dc
Sign up to leave a comment.

Articles