Рубрика «Занимательные задачки» - 45

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 1

Перевод поста Eila Stiegler "The Wolfram Language Worldwide Translations Project".

Код, приведенный в статье, можно скачать здесь, дополнительный код для поста можно скачать здесь.
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе и подготовке публикации


Довольно много времени прошло с тех пор, как я закончила колледж в Германии. И я до сих пор хорошо помню те длинные бессонные ночи, что проводила за выполнением трудных домашних заданий, исследований, и почти полное отсутствие свободного времени. Но так же я хорошо помню и занятия по программированию. Я старалась приступить к ним как можно позже. Но когда программирование уже вошло в список моих обязательных предметов, у меня уже не было возможности его игнорировать. И так как английский — не мой родной язык, мне тяжело давались принципы программирования, которые были для меня чем-то уж очень абстрактным; я постоянно терялась среди названий различных функций, которые приводились на английском. И пускай мне далось всё это весьма тяжело, я с успехом закончила обучение, и вот теперь, годы спустя, я являюсь частью проекта, который мог бы тогда мне сильно помочь — проекта по переводу Wolfram Language на различные языки.

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

Как обычно обучаются программированию? Судя по моему опыту, студентам дают кусок кода и объясняют для чего он нужен. Таким образом, у них появляется возможность познакомиться со структурой и различными функциями. Чтобы облегчить этот процесс, Wolfram Research добавила функционал, который проставляет к коду на языке Wolfram Language аннотации на предпочтительном для вас языке. Мы постоянно развиваем это направление и стараемся добавить максимально возможное количество языков. На данный момент уже имеется поддержка японского, китайского традиционного и упрощенного, корейского, испанского, русского, украинского, польского, немецкого, французского и португальского.

Также в рамках этого проекта мы добавили перевод меню на традиционный китайский, испанский языки, добавив их к уже реализованным японскому и упрощенному китайскому.

Аннотации к коду

Снова возвращаясь к своему студенчеству: если бы у меня был код демонстрации “Major Multinational Languages”, — пример с сайта Wolfram Demonstrations Project — я смогла бы увидеть этот код, аннотированный на немецком. Аннотации никак не изменяют код и не ограничивают его функциональность. Он по-прежнему вычисляемый и может редактироваться, а аннотации к нему изменяются на лету:

Проект по переводу языка Wolfram Language (Mathematica) на различные языки - 2
Читать полностью »

Есть у нас одно .NET-приложение, которое умеет загружать и использовать плагины. Плагины — дело хорошее. Можно функционал расширять, можно оперативненько обновлять их со своего сайта, можно даже юзерам дать SDK и позволить писать свои плагины. Мы всё это и делали. Наши плагины представляли собой обычные .NET-сборки, которые нужно было подкинуть в определённую папку, откуда основное приложения их загружало и использовало. Ну, вы, наверное представляете как — Assembly.Load(), дальше ищем класс, реализующий необходимый интерфейс, создаём объект этого класса и т.д. Всё это работало давно, стабильно и ничто не предвещало беды. Но вдруг в какой-то момент появилась необходимость создать плагин, состоящий из нескольких файлов. В связи с этим было решено считать плагином не просто .NET-сборку (1 файл), а zip-архив, в котором может быть как одна сборка, так и несколько файлов. В связи с этим пришлось научить билд-сервер паковать плагины в архивы, а основное приложение — разархивировать их в нужное место. В общем-то задача на 10 строк кода. Ничто не предвещало беды. И вот скачиваю я с билд-сервера собранный архив с плагином, разархивирую его в нужную папку, запускаю приложение, и… не работает! Стоп, как не работает? Это ведь тот же плагин!

Дальше — больше. Прошу проделать ту же самую процедуру моего коллегу, на его компьютера. Он пробует — и у него всё работает! Но как же так? Одна версия приложения, один и тот же файл с билд-сервера. Какая-то разница в окружении? Сажусь за компьютер коллеги, пробую ещё раз — не работает! Он в этом время пробует на моём — работает! То есть получается, что файл «помнит», кто его разархивировал! Зовём третьего коллегу понаблюдать этот цирк. Последовательно, на одном и том же компьютере, по очереди делаем одни и те же действия: скачиваем архив с плагином, разархивируем в нужную папку, запускаем приложение. Когда это делаю я — программа не видит плагин, когда это делает коллега — всё работает. На третьем круге этих интересных экспериментов вдруг замечаем разницу в действиях: я разархивировал плагин стандартными средствами Windows, а мой коллега — с помощью 7-Zip. И то и другое вызывалось нами из контекстного меню архива, так что разницу в клик по не тому пункту вначале никто не замечал. Ну ок. Получается, файл, извлечённый из zip-архива с помощью 7-zip, отличается от того же файла из того же архива, извлечённого с помощью стандартного архиватора Windows?

Кстати, пока вы не открыли статью под катом, ответьте-ка сами для себя на вопрос, может ли такое быть, что содержимое файлов валидного zip-архива при разархивации 7-zip и через проводник Windows будет разным?
Читать полностью »

первая часть

Прибыв домой, Гарднер тотчас же продемонстрировал Конвею более 20 статей, посвящённых расчёту дня недели для любой даты. Правило Льюиса Кэрролла выглядело лучше остальных. Гарднер повернулся к Конвею и сказал: «Джон, тебе необходимо разработать более простое правило, которым я смогу поделиться с читателями». И, как рассказывает Конвей, длинными зимними ночами, когда мистер и миссис Гарднер у себя дома отправлялись спать (хотя в гости к ним он приезжал исключительно летом), Конвей размышлял над тем, как сделать такой расчёт достаточно простым, чтобы его можно было объяснить среднему человеку с улицы.

Он думал над этим всю дорогу домой, и в общей комнате университета, и наконец додумался до «правила Судного дня». Для работы алгоритму требовались лишь сложение, вычитание и запоминание. Также Конвей придумал мнемоническое правило, помогавшее хранить промежуточные вычисления на пальцах руки. А для наилучшего запоминания информации о дате, Конвей прикусывает свой большой палец.

Следы от зубов должны быть видны! Только так можно это запомнить. Когда я рассказываю студентам об этом методе, я всегда прошу кого-нибудь из первого ряда подтвердить наличие отметок от зубов на пальце. Серьёзных людей так делать не заставишь – они решат, что это детский сад. Но смысл в том, что всё это дело обычно не задерживается у вас в мозгу, и вы забываете дату дня рождения, названную вам человеком. Но большой палец способен запомнить за вас, как далеко эта дата отстоит от ближайшего «Судного дня».

С годами Конвей научил этому алгоритму тысячи людей. Иногда в конференц-зале набирается человек по 600, вычисляющих дни рождения друг друга и прикусывающих свои большие пальцы. А Конвей, как всегда, пытается быть неразумным – он уже неудовлетворён своим простым алгоритмом. С самого момента разработки он пытается его улучшить.
Читать полностью »

Джон Хортон Конвей утверждает, что не работал ни дня в своей жизни. Этот отрывок из биографии «Гений за игрой» показывает, какие серьёзные математические теории, вроде сюрреальных чисел, могут появиться из развлечений и игр.

image

Грызя указательный палец левой руки своими старыми обломанными британскими зубами, с набухшими старческими венами, с задумчиво нахмуренной под давно нестриженными волосами бровью, математик Джон Хортон Конвей без сожаления тратит своё время на раздумья и теоретические изыскания. Хотя он будет утверждать, что ничем не занимается, ленится, и играет в игрушки.

Он работает в Принстоне, хотя славу он обрёл в Кембридже (будучи сначала студентом, а затем профессором с 1957 по 1987 года). Конвей, 77-и лет, утверждает, что не работал ни дня в своей жизни. Он имеет в виду, что тратит почти всё свое время на игры. И в то же время, он профессор Принстона по прикладной и вычислительной математике (сейчас уже почётный). Член Королевского сообщества. И признанный гений. «Титул „гений“ часто неправильно используют»,- говорит Перси Дьяконис, математик из Стэнфорда. – Джон Конвей – гений. При этом он может работать в любой области. И у него чутьё на всякие необычные вещи. Его нельзя поставить в какие-то математические рамки".
Читать полностью »

Теория визуализации информации. Часть 1 - 1

Мне нравится открывать для себя новые способы мышления. Особенно нравится наблюдать, как смутная идея трансформируется в конкретную концепцию. Ярким примером этого является теория информации.

Теория информации дает нам точный язык для описания многих вещей. Какова степень неопределённости? Как ответить на вопрос B, зная ответ на вопрос A? Чем похож один набор убеждений на другой?

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

Теория информации выглядит пугающей, но я думаю, что это не так. На самом деле, многие основные идеи можно наглядно объяснить.Читать полностью »

image

(Скриншот из презентации: slideplayer.com/slide/3238789)

Приглашаем всех на открытую лекцию Computer Science центра, посвященную задаче выполнимости булевых формул — одной из самых известных и важных алгоритмических задач. Лекция пройдёт в рамках встречи со слушателями онлайн-курса «Алгоритмы: теория и практика. Методы». Время и место проведения: 25 декабря, 19:00, БЦ Таймс (г. Санкт-Петербург, ул. Кантемировская 2А, 4 этаж). Участие бесплатное, но требуется регистрация: goo.gl/IiNvV8

Задача выполнимости — каноническая трудная задача, по которой проводится огромное количество исследований: как практических, так и теоретических. В частности, этой задаче посвящена ежегодная международная конференция. Каждый год проходят соревнования программ для данной задачи (так называемых сат-солверов). Такие программы активно используются во многих прикладных областях. Буквально несколько месяцев назад Дональд Кнут дописал том 4B монографии «Искусство программирования», треть которого посвящена задаче выполнимости.

Читать полностью »

Опубликован быстрый алгоритм для задачи изоморфизма графов - 1
Эти два графа являются изоморфными

Математик Ласло Бабай (László Babai) с факультета компьютерных наук и математики Чикагского университета представил быстрый новый алгоритм для решения задачи изоморфизма графов — одной из фундаментальных проблем теории сложности вычислений. Алгоритм приводит проблему очень близко к классу P. По мнению некоторых специалистов, это один из самых значительных результатов в теоретической информатике за десятилетие, если не за несколько десятилетий.
Читать полностью »

Недавно на Хабре промелькнула задачка про двух мудрецов. Здесь я хочу предложить свой вариант и рассказать, как к нему прийти.
Читать полностью »

Условие задачи из знаменитой книги В.И.Арнольда «Задачи для детей от 5 до 15 лет»:
Из A в B и из B в A на рассвете (одновременно) вышли навстречу друг другу (по одной дороге) две старушки.Они встретились в полдень, но не остановились, а каждая продолжала идти с той же скоростью, и первая пришла (в B) в 4 часа дня, а вторая (в A) в 9 часов вечера. В котором часу был в этот день рассвет?

Предлагаю вам послушать (МР3) обсуждение этой задачи на радио «Говорит Москва» (С.Доренко, А.Оношко), и попробовать решить ее, прежде, чем лезть под кат, чтобы сравнить…

Читать полностью »

Наверное, некоторые из вас слышали о такой головоломке, как Lights Out. Если кто-то не знает, суть вкратце такова: имеется поле из n x n клеток, часть клеток «включена», часть «выключена». При нажатии на клетку все клетки в области креста переключат своё состояние. Примерно так:

Lights Out и её необычные применения - 1 Lights Out и её необычные применения - 2

Собственно, задача — сделать все клетки поля «выключенными». Под катом кое-что интереснее, чем просто решение.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js