Сообщения safocl
Покерный калькулятор эквити PokerCalc by Safocl
решил я создать общую тему.
создаю кроссплатформенный покерный калькулятор эквити для безлимитного Holdem на си++17, сравнимый с simple postflop, CardRunners EV и подобным, только опенсорсный под лицензией GPLv3.
Покерный калькулятор будет вычислять эквити руки (шансы выиграть раздачу), относительно дипазона (предполагаемого множества рук) оппонента, а так же конкретной руки в безлимитном Holdem.
пока что пишу саму библиотеку для калькулятора.
на данный момент из вычислений реализован перебор бордов.
сам проект на ветке с STL
имеется ветка с использованием qt5 либы, тут будет задействовано максимум из qt5.
прошу советовать, что и как можно будет улучшить, предлагайте свое видение подобного проекта)))
C++ std::vector быстрее QVector?
имеется реализация одного кода с применением std::vector и QVector
по значению
time ./program
это действительно так, либо к QVector необходимо как-то по особому обращаться?
и еще, у QVector отсутствует доступ к изменяемому элементу с контролем выхода за пределы массива, как в std::vector метод at()?
в QVector он является константным.
хотел писать прогу на QT, однако, думаю, если я все верно делал с QVector, то придется некоторые компоненты брать из STL.
СИ++ Проблема в распараллеливании вычислений
имеется проект
запускной файл
там выполняется функция genFlop(), которая описана тут
в ней выполняется моя попытка распараллелить вычисления.
если оставить всего один поток, то все выполняется отлично, все значения вычисляются. Однако, если запустить хатя бы два потока, то начинается недосчет значений. Точность важна.
Предположительно несколько потоков имеют доступ к одной сущности из-за чего для другого параллельного потока она корруптится и получается неправильное значение.
не могу понять, что за сущность так влияет подобным образом.
в самой функции подсчетов я поставил мьютексы на накопители, которыми и осуществляется подсчет.
Есть ли у кого какие мнения почему подсчеты не верны при параллелизме и всегда разные?
СИ++ параллельные вычисления (многопоточность)
имеется программа, которая работает в однопоточном режиме, однако отказывается делиться на потоки.
классы Card, Hand, Deck не описал в данном примере, потому что и так уже громоздко получилося. Если необходимо их описать, добавлю.
данная программа выдает ошибку:
/usr/include/c++/8.2.1/thread:120:17: error: static assertion failed: std::thread arguments must be invocable after conversion to rvalues
static_assert( __is_invocable<typename decay<_Callable>::type,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
typename decay<_Args>::type...>::value,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
не пойму, что хочет оно? какие аргументы он имеет ввиду, как преобразованые в rvalue?
весь проект
СИ++ Лямбда функции. Как указать необходимый тип возвращаемого значения?
имеется необходимость использования лямбда функции в выражении оператора «if». Однако, вписывая туда:
if ([&a, &b, &c](){
for (auto el : a)
{
if (b == el || c == el)
{
return true;
}
}
return false;
} || c == b)
{
return ЗНАЧЕНИЕ;
}
компилятор грит, что нельзя привести возвращаемое значение лямбды к типу «bool».
стоит флаг компиляции -std=c++17
п.с. если убрать передачу внешних переменных то данная ошибка вроде пропадает, но тада как же мне их туда передать? теряется смсл использования.
При передаче константного объекта по ссылке в функцию, в теле функции не возможно брать из него данные
имеется пример:
#include <iostream>
using namespace std;
class Number
{
private:
int number = 0;
public:
int getNumber ()
{return number;}
void setNumber(const int number)
{
this->number = number;
}
Number & operator= (const Number &number)
{
this->number = number.number;
return *this;
}
};
class TwoNumbers
{
private:
Number num1, num2;
public:
void getNumbers(Number &num1, Number &num2)
{
num1 = this->num1;
num2 = this->num2;
}
void setNumbers (const int num1, const int num2)
{
this->num1.setNumber(num1);
this->num2.setNumber(num2);
}
};
void upup (const TwoNumbers &numbers)
{
Number a,b;
numbers.TwoNumbers::getNumbers(a,b);
cout << a.getNumber() << endl << b.getNumber() << endl;
}
int main()
{
TwoNumbers c;
c.setNumbers(1,2);
upup(c);
return 0;
}
в таком виде выдает ошибку:
../Test/main.cpp:49:39: error: passing ‘const TwoNumbers’ as ‘this’ argument discards qualifiers [-fpermissive]
numbers.TwoNumbers::getNumbers(a,b);
^
если в функции upup() поставить входящий параметр не константу, то все начинает работать...
однако, мне необходимо, что бы данный параметр не изменялся, т.к. он же передан по ссылке.
не могу понять почему так происходит?
и еще — почему то если константу не убирать в параметре описания функции, то qt creator отказывается видить методы данного объекта (const TwoNumbers &numbers), однако видит их через два двоеточия и класс.
Code Blocks не дополняет из STL
имеется арч, Code Blocks 17.12.
почему-то не дополняет из STL поля классов и структур, испробовал множество классов, таких как string, vector, array и подобные.
необходимо, что бы при обращении к полям объекта через точку они выводились, ну и ессесна поля классов через ::
получается создаю объект, пытаюсь через точку вывести список автокомплита, но ничего не происходит:
#include <string>
using namespace std;
string a;
a. <--- вот тут ничего не происходит
ессесна автокомплит включен и вроде все настроен.
п.с. с внутрипроектовыми классами все нормаль, автокомплит присутствует.
C++ Создание статического массива внутри класса
не получается обуздать создание статического массива внутри класса. Нужно выделить статический массив в теле класса, но при попытке сделать так:
class MyClass
{
static const char arr[10] {'1','2', ... ,'9'};
}
выдает: ошибка: «constexpr» требуется для инициализации внутри класса статического элемента данных «char Card::arr [4]» нецелого типа [-fpermissive]
не пойму в чем проблема)))
флаги компилятора:
g++ -fexceptions -std=c++14 -g -Wextra -Wall -Werror
решение: тут
Отсутствие регулировки экспозиции на вебкамере a4tech pk-910h
в общем говоря, приобрел сей девайс, но в вечернее время сильно просаживалось фпс...
в принцыпе я и сам понимал, что тут дело скорее всего в авто экспозиции, но вот как ее отключить я не понял.
испробывал многие проги настройки камер (guvcview, v4l2ucp и т.д.), но в них попросту отсутствует данная функция.
пошел на винду, скачал дрова от подобной камеры с сайта a4tech, т.к. на мою там нету дров, в дровах лежала прога okam (вроде), открыл ее, залез в настройки камеры и о чудо, там есть отключение авто экспозиции и регулировка ее вручную.
Отключил, поставил вменяемое значение, все стало супер... почти...
вопрос — почему не могут найтить енту функцию проги на линукс?
смотрел заголовки v4l2 — там управление ентим моментом имеется.
В Xorg отсутствуют модули
имеется арч, i3wm, nvidia gtx560, nvidia-390.xx дрова.
чото решил покапаться в манах по иксоргу, добрался до пункта MODULE SECTION и за одно решил проверить чо присутствует по пути
`--> ll /lib/xorg/modules/*
-rwxr-xr-x 1 root root 92880 июн 10 10:22 /lib/xorg/modules/libexa.so
-rwxr-xr-x 1 root root 18664 июн 10 10:22 /lib/xorg/modules/libfbdevhw.so
-rwxr-xr-x 1 root root 109456 июн 10 10:22 /lib/xorg/modules/libfb.so
-rwxr-xr-x 1 root root 204864 июн 10 10:22 /lib/xorg/modules/libglamoregl.so
-rwxr-xr-x 1 root root 141976 июн 10 10:22 /lib/xorg/modules/libint10.so
-rwxr-xr-x 1 root root 10304 июн 10 10:22 /lib/xorg/modules/libshadowfb.so
-rwxr-xr-x 1 root root 34912 июн 10 10:22 /lib/xorg/modules/libshadow.so
-rwxr-xr-x 1 root root 26992 июн 10 10:22 /lib/xorg/modules/libvbe.so
-rwxr-xr-x 1 root root 31880 июн 10 10:22 /lib/xorg/modules/libvgahw.so
-rwxr-xr-x 1 root root 129936 июн 10 10:22 /lib/xorg/modules/libwfb.so
/lib/xorg/modules/drivers:
итого 7704
-rwxr-xr-x 1 root root 102944 июн 10 10:22 modesetting_drv.so
-rwxr-xr-x 1 root root 7780432 июн 7 00:23 nvidia_drv.so
/lib/xorg/modules/extensions:
итого 276
-rwxr-xr-x 1 root root 281544 июн 10 10:22 libglx.so
/lib/xorg/modules/input:
итого 184
-rwxr-xr-x 1 root root 60064 июн 3 14:08 evdev_drv.so
-rwxr-xr-x 1 root root 71576 апр 10 20:14 libinput_drv.so
-rwxr-xr-x 1 root root 50672 ноя 18 2016 mouse_drv.so
в ентой секции указано, что
The “extmod”, “dbe”, “dri”, “dri2”, “glx”, and “record” extension modules are loaded automatically
но кроме glx никаких модулей из ентого списка нет.
пакет иксорга из аур xorg-server-bug865.
так и должны отсутствовать в ентой папке остальные модули или они должны присутствовать?
п.с. вроде все опции компиляции не отличаются от офф пакета xorg-server
и еще один вопрос — имеется модуль nvidia_drv.so, он автоматом подхватывается без указания его в опции Load?
Skype черный квадрат у камеры
Почемуто в скайпе черный квадрат у камеры.
ноутбук asus k53sm
в проге guvcview все норм работает...
скрин настроек в скайпе
камеру вроде видит, но не показывает.
`--> lsusb
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 0bda:0139 Realtek Semiconductor Corp. RTS5139 Card Reader Controller
Bus 001 Device 004: ID 13d3:5710 IMC Networks UVC VGA Webcam
Bus 001 Device 006: ID 0cf3:3005 Qualcomm Atheros Communications AR3011 Bluetooth
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
`--> lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 (rev b5)
00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4 (rev b5)
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation HM65 Express Chipset Family LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port Mobile SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 05)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce GT 620M/630M/635M/640M LE] (rev ff)
03:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
04:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
не пойму, енто в скайпе не доделано или только у меня с данной вебкой?
Утечка памяти в простой проге.
написал утилитку, удаляющую все файлы wine из каталогов «/home/safff/.local/share/mime/application» и «/safff/.local/share/mime/packages».
все работает, только наблюдается утечка памяти. поначалу вроде ничего, килобайт 500, но потом разрастается за 10 минут в 2 метра+.
не пойму откуда ента утечка
GCC взбесилси?
пытался написать прогу, но почему то гцц начал ересь нести... при компиляции даже такого простейшего кода
#include <stdio.h>
#include <stdlib.h>
void main(void) {
char str1 = "razraz";
printf ("\n");
return;
}
выводит:
`--> gcc test.c -o testup
test.c: В функции «main»:
test.c:6:14: предупреждение: при инициализации указатель преобразуется в целое без приведения типа [-Wint-conversion]
char str1 = "razraz";
^~~~~~~~
Темная тема breeze-gtk отображает выпадающий список белым с белым текстом
Как восстановить 3gp файл, в котором m4v+m4a содержимое?
имеется арч, поврежденный видео файл (при видеосъемке телефон упал и батарейка вывалилася).
пробывал восстановление Video Repair Tool через вайн — восстанавливает, но не все, что было до момента отвала АКБ телефона.
пробывал так же untrunc, создает копеешные файлы, в которых ессесна нет видео.
так же пробывал вот енто, но он не хочет почему то нормально определять содержимое m4v, хатя в описании написано, что вроде должен, в общем он пишет все в файл выхода звука.
не могу больше найти ничего подобного.
после «аварии» скопил на комп под виндой сам файл, после чего на флешке он стал 0 байт почемуто.
придя домой задедешил всю флешку.
флешка c FAT
вот чо думает qmplay2 о файле, который был записан не за долго до испорченного, настройки записи никак не менял.
чо кто посоветует?
i3wm дочерние окна могут перемещаться на задний план относительно родительских
имеется арч, i3wm
не помню с какого обновления у меня стали дочерние окна перемещаться на задний план относительно родительских при наведении на родительские во флат режиме.
раньше дочернее окно всегда оставалось на переднем плане, хоть и активизировалось родительское окно для перетаскивания.
в данный момент получается так, что любые оповещения при наведении на родительские окна во флат режиме улетают под них...
мб создали настройку данного момента, а я енто упустил?
Как записать HDAT2 на флешку?
имеется арч.
понадобилась данная прога, но не могу понять, как ее правильно записывать?
пытался через
`--> sudo dd if=Downloads/hdat2cd_53.iso of=/dev/sdb
так же пробывал через создание даже таблицы разделов на флешке, все равно не читается как загрузочная
уже пробывал совместимость с досом ставить в fdisk но все пофиг...
как записать флешку чо бы читалось как загрузочная?
скачивал образ отсуда
апд... если дедешу img файл, то просит ввести путь до COMMAND.COM, ввожу снова просит, хатя он лежит в корне. выше пишет запуск шиндовс98... ваще не пойму в чем трабббла
Как изменить размер блока?
имеется арч, винт ноутовский 5400 об. на 500гигов, gpt разметка
не пойму почему пишет
`--> sudo fdisk /dev/sda -l
Диск /dev/sda: 465,8 GiB, 500107862016 байт, 976773168 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер I/O (минимальный/оптимальный): 4096 байт / 4096 байт
Тип метки диска: gpt
Идентификатор диска: D24E4E41-B998-49D8-9DF3-0C486422CB38
Устр-во начало Конец Секторы Размер Тип
/dev/sda1 2048 616447 614400 300M EFI
/dev/sda2 616448 1230847 614400 300M Файловая система Linux
/dev/sda3 1230848 85116927 83886080 40G Файловая система Linux
/dev/sda4 535144448 976773119 441628672 210,6G Файловая система Linux
/dev/sda5 85116928 535144447 450027520 214,6G Файловая система Linux
где и как изменить чо бы «Размер сектора (логический/физический): 512 байт / 4096 байт» начали совпадать, из-за ентого как я монял может быть траббла с произвадительностью?
Qmplay2 где переключать аудиодорожки?
не могу найтить где в Qmplay2 переключать аудиодорожки?
заменил им vlc ибо значительно шустрее перелистывает.
← назад | следующие → |