Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/248: Рейтинг темы: голосов - 248, средняя оценка - 4.65
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
24.03.2015, 19:34
Студворк — интернет-сервис помощи студентам
Я даже не смею показать какие возможности по долблению битиков даёт Common Lisp, иначе D будет выглядеть совсем уж тухло.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
24.03.2015, 19:38
Dennis Ritchie, изучай:
https://github.com/D-Programmi... d/bigint.d
https://github.com/D-Programmi... uintcore.d
https://github.com/D-Programmi... intnoasm.d

Добавлено через 3 минуты
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
pycture, просто несёт какой-то бред, не понимая, что выражение format("%b", el) возвращает тип string (immutable(char)[]).
В каком месте он несёт бред? Я тебе там скинул ссылки, посмотри определение BigInt, а то глупости пишешь про представление BigInt в виде строк.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Не каждый бит, а каждое число.
А pycture говорил про битовые массивы. Какое отношение к ним имеет массив BigInt'ов?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
24.03.2015, 19:39
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Неявное привидение в D делается так cast(typename) n.
унылые вы дэшники. ниче не знаете и необучаемы.
Code
1
immutable BigDigit[]
внутренее предствление бигинта в вашем дэ. но вам то откуда это знать в вашем мирке бигинт это строки
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
24.03.2015, 19:46
Цитата Сообщение от korvin_ Посмотреть сообщение
А pycture говорил про битовые массивы. Какое отношение к ним имеет массив BigInt'ов?
Вот именно, что я ничего не говорил про битовые массивы, а pycture начал "маслать" про какие-то битовые массивы. Или вам не понравилось то, что я назвал массив bitArr?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
24.03.2015, 19:57
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Вот именно, что я ничего не говорил про битовые массивы
Как это не говорил? А это что:
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
написать эффективную и короткую программу, которая переводит положительные и отрицательные целые числа в двоичную систему?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
24.03.2015, 20:04
Цитата Сообщение от korvin_ Посмотреть сообщение
Как это не говорил? А это что:
Где в этой фразе ты увидел слово "массив"?
А чего интересно мне узнать Voivoid нормально понял моё задание, а у pycture пошло какое-то несварение с битовыми массивами? Хотите увидеть битовые массивы, так покажу, но я не могу написать программу за 5 минут, потому что ещё не работал с std.bitmanip.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
24.03.2015, 20:59
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Где в этой фразе ты увидел слово "массив"?
А как по твоему должно быть представлено число в двоичной форме, как не массивом бит?

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А чего интересно мне узнать Voivoid нормально понял моё задание
Угу, и использовал битовый массив (std::bitset). Так какие претензии к picture? Где у него «пошло какое-то несварение с битовыми массивами»?

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Хотите увидеть битовые массивы, так покажу, но я не могу написать программу за 5 минут, потому что ещё не работал с std.bitmanip
Почитать документацию — дело пары минут. Или олимпиадников не учат читать документацию?
0
 Аватар для TheFox
131 / 67 / 10
Регистрация: 13.05.2013
Сообщений: 437
24.03.2015, 23:58
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Прочитай эту статью:
Дополнительный код (представление числа)
Что просил, то и получил, в задании я не видел слова дополнительный код

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
положительные и отрицательные
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
тестировать программу на числах размера unsigned long long
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
bitArr[ 0] = -15 = 11111111111111111111111111110001 [разрядов не маловато?]
Что-то тут не сходится.

На Java все та же одна строчка

Java
1
2
System.out.println(Long.toBinaryString(-15));
// 1111111111111111111111111111111111111111111111111111111111110001
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
25.03.2015, 07:03
Цитата Сообщение от korvin_ Посмотреть сообщение
Почитать документацию — дело пары минут. Или олимпиадников не учат читать документацию?
В том-то и дело, что документировано всё плохо, по
Цитата Сообщение от TheFox Посмотреть сообщение
Что-то тут не сходится.
Что не сходится? У тебя long, а у меня int:
C++
1
2
3
4
5
6
7
import std.stdio : writefln;
 
void main() {
 
    writefln("%b", -15L);
    // 1111111111111111111111111111111111111111111111111111111111110001
}
Цитата Сообщение от korvin_ Посмотреть сообщение
А как по твоему должно быть представлено число в двоичной форме, как не массивом бит?
Ну я, например, запихнул каждое число в BigInt. Если C++ так не может без boost, то это проблемы C++, а не мои.
Цитата Сообщение от korvin_ Посмотреть сообщение
Почитать документацию — дело пары минут. Или олимпиадников не учат читать документацию?
У меня промышленники даже такое спрашивают, а ты говоришь: "Олимпиадники, олимпиадники":
Цитата Сообщение от pycture Посмотреть сообщение
unsigned long long это сколько бит? (ломает дэкументацию изучать)
P.S. Лично мне жалко смотреть на промышленников после этой цитаты. Вы позорите сообщество промышленников.
Цитата Сообщение от korvin_ Посмотреть сообщение
Угу, и использовал битовый массив (std::bitset).
В одном напечатанном числе я не заметил массива.

Не по теме:

Цитата Сообщение от korvin_ Посмотреть сообщение
Так какие претензии к picture?
К какой картине? :D

0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
25.03.2015, 07:28
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Вы позорите сообщество промышленников
о.. значит все должны костылки всяких маргинальных язычков (тем более что воспаленный мозги дэшников пугают окружающих тем что собираются тестить отрицительные числа на unsigned типах )? фанатики дэ сами про свой язычек _ничего_ не знают а все тудаже.
че там со слайсом то из 1 символа? асилил или мозг дэшника все таки на это не способен?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
25.03.2015, 09:21
Цитата Сообщение от pycture Посмотреть сообщение
о.. значит все должны костылки всяких маргинальных язычков
C++, по-вашему, это маргинальный язычок (нет, скорее всего вы имели в виду C# и F#)? В D вообще нет типа unsigned long long.
Цитата Сообщение от pycture Посмотреть сообщение
че там со слайсом то из 1 символа?
Это кусок промышленного, как обычно нерабочего, кода :
C++
1
buf[0 .. num] = 'A';
P.S. Иди и учи D, чтобы писать правильный код, а не свой негро-выгрызенный F# (наверное, F# придумал какой-то негр).

Битовый массив для чайников :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
import std.conv : to;
import std.array : array;
import std.algorithm : map;
import std.stdio : writeln;
import std.string : format, split;
 
void main() {
 
    auto bitArr = format("%b", -15).split("").map!(to!ubyte).array;
 
    writeln(bitArr);
    // [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1]
}
http://ideone.com/j9GCaJ
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
25.03.2015, 09:35
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ну я, например, запихнул каждое число в BigInt.
Какое каждое число? Речь об одном числе. Повторяю вопрос: как по-твоему должно быть представлено число в двоичной системе счисления?

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
В одном напечатанном числе я не заметил массива.
Потому что неуч. Почитай, что такое bitset.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
У меня промышленники даже такое спрашивают, а ты говоришь: "Олимпиадники, олимпиадники":
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
P.S. Лично мне жалко смотреть на промышленников после этой цитаты. Вы позорите сообщество промышленников.
picture не хочет читать документацию по языку, на котором он не пишет.
Ты не можешь прочитать документацию по языку, на котором ты пишешь.
Почувствуй разницу.

Добавлено через 1 минуту
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Битовый массив для чайников
Да мы уже поняли, что ты чайник, мог бы не позориться больше.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
25.03.2015, 10:26
Цитата Сообщение от korvin_ Посмотреть сообщение
Какое каждое число?
Я сначала решил запихнуть каждое число в двоичном представлении в массив, как элемент BigInt.
Цитата Сообщение от korvin_ Посмотреть сообщение
Повторяю вопрос: как по-твоему должно быть представлено число в двоичной системе счисления?
Я уже написал две программы, в одной из которых двоичное число представлено с помощью BigInt, в другой программе я представил число в виде простого массива. Сам считаю, что хранить в BigInt'е лучше, потому что в таком случае я могу хранить каждое число в одном элементе массива. А ты хочешь, чтобы я хранил двоичное число в массиве. По-твоему, мне нужно создавать для каждого числа отдельный массив, а не хранить его в элементе массива типа BigInt?
Цитата Сообщение от korvin_ Посмотреть сообщение
picture не хочет читать документацию по языку, на котором он не пишет.
Какая картина? Мне нет дело до того, что кто-то что-то хочет, и кто-то что-то не хочет.
Цитата Сообщение от korvin_ Посмотреть сообщение
Да мы уже поняли, что ты чайник, мог бы не позориться больше.
Это промышленники - чайники.
Цитата Сообщение от korvin_ Посмотреть сообщение
Ты не можешь прочитать документацию по языку, на котором ты пишешь.
Я уже несколько раз прочитал:
std.bitmanip
Там не написано, как инициализировать BitArray, поэтому я и не могу использовать BitArray.
Краткая история
Как бы сентиментально это ни звучало, D - дитя любви. Когда-то в 1990-х Уолтер Брайт, автор компиляторов для C и C++, решил, что больше не хочет работать над ними, и задался целью определить язык, каким, по его мнению, «он должен быть». Многие из нас в тот или иной момент начинают мечтать об определении Правильного Языка; к счастью, Уолтер уже обладал значительной частью инфраструктуры: генератором кода (backend), компоновщиком, а главное - широчайшим опытом построения языковых процессоров. Благодаря этому опыту перед Уолтером открылась интересная перспектива. По какому-то таинственному закону природы плохо спроектированная функциональность языка проявляется в логически запутанной реализации компилятора, как отвратительный характер Дориана Грея проявлялся на его портрете. Проектируя свой новый язык, Уолтер планомерно старался избежать таких патологий.
Едва зарождающийся тогда язык был схож по духу с C++, поэтому программисты называли его просто D, несмотря на первоначальную попытку Уолтера даровать ему титул «Марса». По причинам, которые вскоре станут очевидными, назовем этот язык D1. Страсть и упорство, с которыми Уолтер работал над D1 несколько лет, привлекали все больше единомышленников. К 2006 году D1 достиг уровня сильного языка, технически способного на равных соперничать с такими уже признанными языками, как Java и C++. Но к тому времени уже было ясно, что D1 никогда не станет популярным, поскольку, в отличие от других языков, он не обладал функциональной индивидуальностью, оправдывавшей его существование. И тогда Уолтер совершил дерзкий маневр: решив представить D1 в качестве этакой первой сырой версии, он перевел его в режим поддержки и приступил к разработке нового проекта - второй итерации языка, не обязанной поддерживать обратную совместимость.
Пользователи текущей версии D1 по-прежнему выигрывали от исправления ошибок, но никаких новых возможностей D1 не предоставлял. Реализовать определение наилучшего языка было суждено языку D2, который я и называю просто D.
Маневр удался. Первая итерация показала, что достойно внимания, а чего следует избегать. Кроме того, можно было не спешить с рекламой нового языка - новые члены сообщества могли спокойно работать со стабильной, активно используемой версией D1. Поскольку процесс разработки не был ограничен ни обратной совместимостью, ни сроками, можно было спокойно оценить альтернативы развития проекта и выработать правильное направление. Чтобы еще больше облегчить разработку, Уолтер призвал на помощь коллег, в том числе Бартоша Милевски и меня. Важные решения, касающиеся взглядов D на неизменяемость, обобщенное и функциональное программирование, параллельные вычисления, безопасность и многое другое, мы принимали в долгих оживленных дискуссиях на троих в одной из кофеен Киркленда (штат Вашингтон).
Тем временем D явно перерос свое прозвище «улучшенный C++», превратившись в мощный многофункциональный язык, вполне способный оставить без работы как языки для системного и прикладного (промышленного) программирования, так и языки сценариев. Оставалась одна проблема: весь этот рост и все усовершенствование прошли никем не замеченными; подходы D к программированию были документированы очень слабо.
Книга, которая сейчас перед вами, - попытка восполнить это упущение. Надеюсь, читать ее вам будет так же приятно, как мне - писать.
P.S. std.bitmanip документирован очень слабо.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
25.03.2015, 11:14
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Я уже написал две программы, в одной из которых двоичное число представлено с помощью BigInt, в другой программе я представил число в виде простого массива. Сам считаю, что хранить в BigInt'е лучше, потому что в таком случае я могу хранить каждое число в одном элементе массива. А ты хочешь, чтобы я хранил двоичное число в массиве. По-твоему, мне нужно создавать для каждого числа отдельный массив, а не хранить его в элементе массива типа BigInt?
Олимпиадники все такие глупые? https://en.wikipedia.org/wiki/Bit_array

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Там не написано, как инициализировать BitArray, поэтому я и не могу использовать BitArray.
Очередной позор. Там даже примеры есть.

C++
1
auto b = BitArray([0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1]);
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
25.03.2015, 11:19
Цитата Сообщение от korvin_ Посмотреть сообщение
Очередной позор. Там даже примеры есть.
Ага. А как ты применишь format("%b", -15) к этому чуду?
Или каждый раз вручную будешь заполнять BitArray?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
25.03.2015, 11:26
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ага. А как ты применишь format("%b", -15) к этому чуду?
Там же есть примеры и с форматом...
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
25.03.2015, 11:39
Цитата Сообщение от korvin_ Посмотреть сообщение
Там же есть примеры и с форматом...
Так ведь всё равно вручную каждый раз придётся инициализировать BitArray:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
import std.stdio : writeln;
import std.string : format;
import std.bitmanip : BitArray;
 
void main() {
    
    auto bitArr = BitArray([0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1]);
    
    auto newBitArr = format("%s", bitArr);
 
    writeln(newBitArr);
    // [0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1]
}
Зачем этот BitArray, если я не могу сделать так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
import std.conv : to;
import std.array : array;
import std.algorithm : map;
import std.stdio : writeln;
import std.string : format, split;
 
void main() {
 
    auto bitArr = format("%b", -15).split("").map!(to!ubyte).array;
 
    writeln(bitArr);
    // [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1]
}
0
 Аватар для TheFox
131 / 67 / 10
Регистрация: 13.05.2013
Сообщений: 437
25.03.2015, 12:08
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Что не сходится?
Попросил программу для отрицательных, собрался тестировать на unsigned long, а свою написал и протестировал на int и еще спрашивает, чего не сходится По итогу же преимуществ тут не оказалось.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
нет, скорее всего вы имели в виду C#
Стало любопытно, строк займет у вас сортировка списка целых чисел таким образом, чтобы наиболее часто встречающиеся оказались вначале, то есть

C
1
2
На входе: 3, 5, 3, 5, 3, 6, 3, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1
На выходе: 11111111133333333355556
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
25.03.2015, 12:20
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Так ведь всё равно вручную каждый раз придётся инициализировать BitArray:
Вот такой D тухлый язык.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Зачем этот BitArray, если я не могу сделать так?
В википедии написано, зачем нужны битовые массивы.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
25.03.2015, 12:30
Цитата Сообщение от TheFox Посмотреть сообщение
Попросил программу для отрицательных, собрался тестировать на unsigned long, а свою написал и протестировал на int и еще спрашивает, чего не сходится
Я BigInt инициализировал int'ами. Захочу: инициализирую ulong'ами. Дошло?
Цитата Сообщение от TheFox Посмотреть сообщение
Стало любопытно, строк займет у вас сортировка списка целых чисел таким образом, чтобы наиболее часто встречающиеся оказались вначале, то есть

C++
1
2
3
4
5
6
7
8
9
10
import std.stdio : writeln;
import std.algorithm : sort;
 
void main() {
 
    auto arr = [3, 5, 3, 5, 3, 6, 3, 5, 3, 5, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1];
 
    writeln(sort(arr));
    // [1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 6]
}
Цитата Сообщение от korvin_ Посмотреть сообщение
В википедии написано, зачем нужны битовые массивы.
Вот и используй их, если тебе нравится. По-моему, в D они вообще не нужны, ибо D настолько мощный, что простым манипулированием нескольких стандартных функций я могу получить битовый массив из обычного.

Скоро все останутся без работы, кроме меня и XRuZzz.
Тем временем D явно перерос свое прозвище «улучшенный C++», превратившись в мощный многофункциональный язык, вполне способный оставить без работы как языки для системного и прикладного (промышленного) программирования, так и языки сценариев.
Вчера зарелизили DMD 2.067.0! Скачивайте быстрее, чтобы не остаться без работы со своими плюсюками, жабками и сишарпочками.
P.S. Теперь с новой версией DMD 2.067.0 я смогу "драть" вас ещё эффективней.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Закрытая тема Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru