-
Posts
1,635 -
Joined
-
Last visited
-
Days Won
6
Content Type
Profiles
Forums
Downloads
Posts posted by Omesmo
-
-
5 horas atrás, Eolocos disse:
acho que nem foi lição de moral
tenho uma leve desconfiança que falava sobre ética
sim, oq no final dá na mesma já que seguem o mesmo principio,
mas bem, dá para reparar que o gpt tem um treino muito forte nas questões filosóficas- 1
-
o chat gpt dando lição de moral kkk
Spoilerse na minha religião nao puder comer carne, e eu chamar a salada de fruta de bife de figado e comer imaginando que é um suculento bife acebolado, eu estarei pecando?Como modelo de linguagem, não estou programado para discutir questões religiosas ou julgar as escolhas pessoais de alguém. No entanto, se você está seguindo as práticas alimentares da sua religião, pode ser importante para você seguir essas práticas de maneira sincera e respeitosa. Fingir que está comendo carne quando está na verdade comendo frutas pode não estar em conformidade com os princípios éticos e espirituais da sua religião.
É sempre importante lembrar que as escolhas alimentares são pessoais e podem variar de acordo com crenças e valores individuais. Se você está enfrentando dificuldades para seguir as práticas alimentares da sua religião, talvez seja útil falar com um líder religioso ou buscar aconselhamento para ajudá-lo a encontrar uma solução que funcione para você.
- 1
-
tenho reparado que sempre que pedimos para o gpt algo de codigo sem especificar a linguagem ele faz em python
parece que é uma linguagem que já tem bastante coisa incorporada, TensorFlow, PyTorch, Scikit-learn, Keras e outros, para desenvolver algoritmos de aprendizado de máquina por exemplo , talvez seja uma escolha mais inteligente para se mexer em loteria
-
19 minutos atrás, rockcavera disse:
Quando se usa esses builtins no gcc, tem que passar -mpopcnt ao compilar para ele usar a instrução popcnt. Caso contrário ele usa um hack que não é de instrução única.
é eu estava lendo sobre isso, aliais o proprio gpt tinha escrito sobre isso ao passar o exemplo de função
mas mesmo que eu quisesse nao daria, já que esse all in lerdo nao tem , o meu antigo só tinha sse4.2
no caso como eu prefiro o vba e usar o excel eu faria primeiro uma função em dll que fizesse bitwise em 2 inteiros e retornasse a contagem de bit do resultado, e no proprio vba teria uma função para criar previamente a matriz de inteiros das combinações -
estava vendo os codigos gerados pelo gpt e reparei nisso
if (__builtin_popcount(i) == k) { // verifica se i tem exatamente k bits definidos__builtin_popcount(i)
pesquisando vi que apesar de nao ser padrão do C tem compilador que incorpora funções desse tipo como o GCC
para int use __builtin_popcount(n)
para int longo use __builtin_popcountl(n)
para long long int use __builtin_popcountll(n)
o problema é que parece que precisaria fazer um para cada tipo, se fosse escolhido o tipo em tempo de execução ficaria mais lentopedi para o gpt montar um contador de bits para 100bits usando assembly numa função c
#include <stdint.h> uint64_t popcnt_100bits(const void *ptr) { uint64_t count; __asm__ volatile ( "movdqu xmm0, [%[ptr]] \n" "movdqu xmm1, [%[ptr]+16] \n" "movdqu xmm2, [%[ptr]+32] \n" "movdqu xmm3, [%[ptr]+48] \n" "movdqu xmm4, [%[ptr]+64] \n" "pshufb xmm5, xmm0 \n" "pshufb xmm6, xmm1 \n" "pshufb xmm7, xmm2 \n" "pshufb xmm8, xmm3 \n" "pshufb xmm9, xmm4 \n" "popcnt %[count], xmm5 \n" "popcnt %%rdx, xmm6 \n" "add %[count], %%rdx \n" "popcnt %%rcx, xmm7 \n" "add %[count], %%rcx \n" "popcnt %%rbx, xmm8 \n" "add %[count], %%rbx \n" "popcnt %%rsi, xmm9 \n" "add %[count], %%rsi \n" : [count] "=r" (count) : [ptr] "r" (ptr) : "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9", "memory" ); return count; }
CitarNeste código, a função C
popcnt_100bits
chama o código em assembly que conta o número de bits definidos como 1 em um número de 100 bits. A função C declara uma variávelcount
para armazenar o resultado do cálculo em assembly. A instrução__asm__ volatile
é usada para incorporar o código assembly em uma função C.Os registradores
xmm0
axmm9
são usados para armazenar os valores dos registradores SIMD SSE, e a opçãomemory
é usada para notificar o compilador que a função pode acessar a memória. A opçãor
é usada para especificar que o ponteiroptr
é passado como um registrador. A opção=r
é usada para especificar que a variávelcount
é passada como um registrador de saída. As instruçõesmovdqu
,pshufb
epopcnt
são as mesmas que as usadas no código em assembly que eu apresentei anteriormente.eu adoraria fazer funções em dll para usar em planilhas
apesar da maioria das coisas que eu faço funcionar muito bem em vba tem uns testes meus que demora muito pelo grande numero de testes que faz
- 1
-
2 horas atrás, rockcavera disse:
A minha experiência em si não é com C, tendo em vista que hoje em dia não é considerado uma linguagem "moderna", mas, sim, com Nim, que compila para C. Ou seja, no final das contas eu uso C só que com uma camada de abstração de Nim.
em comparação o ruim do c é que nao tem um coletor de lixo e tudo tem que ser feito manualmente
no geral a maiorias das linguagens modernas seguiram o C
o rum para mim é a estrutura e operadores (){}; :: && ...
claro que com o tempo e uso se acostuma , mas merds pq fizeram assim, seria tão dificil fazer um compilador que usasse uma estrutura mais "humana" igual o basic que usa operadores usados igual na matemática?
por isso o basic é tão facil de se pegar, é pq já aprendemos parte no colegio mesmo e nem é em programação, fora que acompanhar a estrutura de codigos mais complexos é mais facil ainda mais com loops e ifs alinhados
sobre o POPCNT, acho que tem a partir do intel i de primeira geração no sse4.2 e acho que trabalha com 128 bit que de qualquer forma tem que ser dividido numa matrizao meu ver se for transformar uma matriz de dezenas em um inteiro acho que valeria mais a pena já dividir na conversão
de 1 a 32, inteiro A
de 33 a 64 = valor -32 , inteiro B
bem, eu estou só com um az1100 amd e-350 apu all in one , muito ruim, consegui até compilar usando o dev-c++ mas tenho paciência de jó nao , então vou dar um tempo no aprendizado- 1
- 1
-
32767 49151 81919 147455 278527 540671 1064959 2113535 4210687 8404991 16793599 57343 90111 155647 286719 548863 1073151 2121727 4218879 8413183 16801791 106495 172031 303103 565247 1089535 2138111 4235263 8429567 16818175 204799 335871 598015 1122303 2170879 4268031 8462335 16850943 401407 663551 1187839 2236415 4333567 8527871 16916479 794623 1318911 2367487 4464639 8658943 17047551 1581055 2629631 4726783 8921087 17309695 3153919 5251071 9445375 17833983 This sequence of numbers appears to be a pattern of values that increase by multiplying the previous value by 1.5 and then adding 1. Here's the first few numbers in the sequence with this calculation:
32767
32767 * 1.5 + 1 = 49151
49151 * 1.5 + 1 = 81919
81919 * 1.5 + 1 = 147455
147455 * 1.5 + 1 = 278527
278527 * 1.5 + 1 = 540671
540671 * 1.5 + 1 = 1064959
1064959 * 1.5 + 1 = 2113535
2113535 * 1.5 + 1 = 4210687
4210687 * 1.5 + 1 = 8404991
8404991 * 1.5 + 1 = 16793599
kkk esse gpt as vezes tem preguiça
- 1
-
16 minutos atrás, Omesmo disse:
tipo aquele gerador de combinações assembly para pb
ele deu uma descrição do que faz o problema é que pedir para gfazer em C e ela fez em swift kkkk, eu nem tinha reparado até ler o nome
no sufoco consegui fazer ele gerar em C
as vezes é necessário reiniciar o chat ou criar um do zero, senao ele se confunde nas coisas que ele mesmo disseCitarconsegue montar o mesmo codigo dentro da linguagem "C" ?Sim, é possível traduzir o código do PowerBASIC para C. No entanto, é importante lembrar que o código original contém algumas variáveis e declarações globais, e que essas variáveis precisariam ser replicadas de alguma forma em C.
Abaixo está uma tradução aproximada do código do PowerBASIC para C. Esta tradução é apenas um ponto de partida e pode precisar ser ajustada para atender às necessidades específicas do projeto:
#include <stdio.h> #include <stdlib.h> #define MAX_COMBS 51000000 long lotto_combs[MAX_COMBS * 7]; long *ptr2_lotto_combs; long number_of_combinations = 0; long *ptr2_number_of_combinations; long full_number = 0; long *ptr2_full_number; void generate_combinations() { asm { push ebx push ecx push edx push esi push edi mov esi, ptr2_lotto_combs mov edi, ptr2_number_of_combinations mov ebx, ptr2_full_number mov edx, 1 mov eax, [ebx] mov ecx, [eax] shl ecx, 1 mov [edi], 0 startloop: mov [esi+edx-1], 1 call next_combination cmp [eax], 0 jne add_combination jmp endloop add_combination: add [edi], 1 endloop: cmp edx, ecx jne startloop pop edi pop esi pop edx pop ecx pop ebx } } void next_combination() { asm { push ebx push ecx push edx push esi mov esi, ptr2_lotto_combs mov ebx, ptr2_full_number mov edx, 7 loop1: dec edx mov ecx, [esi+edx-1] cmp ecx, [ebx] je loop1 mov [esi+edx-1], ecx+1 mov eax, edx mul eax sub eax, edx mov edx, 6 div edx mov ecx, [esi+eax*6-6] mov ebx, [esi+edx*6-6] cmp ecx, ebx jb loop1 pop esi pop edx pop ecx pop ebx } } int main() { ptr2_lotto_combs = &lotto_combs[0]; ptr2_number_of_combinations = &number_of_combinations; ptr2_full_number = &full_number; // Aqui é necessário definir o valor de full_number antes de chamar a função generate_combinations() generate_combinations(); // O resultado das combinações geradas pode ser acessado através de lotto_combs[] usando a fórmula lotto_combs[(i-1)*6+j] }
#include <stdio.h> // Define global variables #define MAX_COMBS 51000000 unsigned char lotto_combs[MAX_COMBS * 7]; unsigned char *ptr2_lotto_combs = &lotto_combs[0]; long number_of_combinations = 0; long *ptr2_number_of_combinations = &number_of_combinations; long full_number = 0; long *ptr2_full_number = &full_number; void generate_combinations() { __asm { mov ebx, 1 // i = 1 mov ecx, [ptr2_lotto_combs] mov eax, [ptr2_number_of_combinations] mov edx, [ptr2_full_number] jmp start loop_i: inc ebx // i++ cmp ebx, [eax] // if i > number_of_combinations, exit loop jg end_loop start: mov esi, ebx mov edi, ecx loop_j: mov [edi], esi inc edi shr esi, 8 cmp edi, ecx + 6 // if j == 6, exit loop je end_j_loop jmp loop_j end_j_loop: inc [eax] // increment number_of_combinations add ecx, 7 // increment lotto_combs pointer jmp loop_i end_loop: } } int main() { ptr2_lotto_combs = &lotto_combs[0]; ptr2_number_of_combinations = &number_of_combinations; ptr2_full_number = &full_number; full_number = 49; // set full_number to 49 (total number in pool) generate_combinations(); // Test access to combinations printf("Combination 1, number 1: %d\n", lotto_combs[0] * 6 + 0); printf("Combination 1, number 2: %d\n", lotto_combs[0] * 6 + 1); printf("Combination 1, number 3: %d\n", lotto_combs[0] * 6 + 2); printf("Combination 1, number 4: %d\n", lotto_combs[0] * 6 + 3); printf("Combination 1, number 5: %d\n", lotto_combs[0] * 6 + 4); printf("Combination 1, number 6: %d\n", lotto_combs[0] * 6 + 5); printf("Combination 2, number 1: %d\n", lotto_combs[7] * 6 + 0); printf("Combination 2, number 2: %d\n", lotto_combs[7] * 6 + 1); printf("Combination 2, number 3: %d\n", lotto_combs[7] * 6 + 2); printf("Combination 2, number 4: %d\n", lotto_combs[7] * 6 + 3); printf("Combination 2, number 5: %d\n", lotto_combs[7] * 6 + 4); printf("Combination 2, number 6: %d\n", lotto_combs[7] * 6 + 5); return 0; } Note that the generated combinations
- 1
-
1 minuto atrás, DixieJoe disse:
A questão é saber se está correto e se funciona!
a ia deu uma descrição completa antes disso ,
dependendo de como se faz a pergunta e das informações que se apresenta ela até que é bem responsiva
tipo aquele gerador de combinações assembly para pb
ele deu uma descrição do que faz o problema é que pedir para gfazer em C e ela fez em swift kkkk, eu nem tinha reparado até ler o nome
- 1
-
@DixieJoepo vc falou que nao gostou do gpt
eu pedi a ele para converter um assembly daquele em c , pode até pedi uma explicação da funcionalidade"só nao sei se está falando a verdade kkkk"
; function LotIndex( Lot:LotMap ): LongInt; far; LotIndex PROC FAR Lot:DWORD PUBLIC LotIndex xor eax, eax ; Index := 0 les si, Triangle mov ecx, Lot @@41: jecxz @@44 @@42: shr ecx, 1 ; Inc(x) jc @@43 ; if x in ... add si, 4 ; Inc(j) jmp @@42 @@43: add eax, es:[si] ; Index := Index + ... add si, 128 ; Inc(i) jmp @@41 @@44: mov edx, eax shr edx, 16 ret LotIndex ENDP
CitarSim, é possível converter o código assembly em uma função equivalente em C. A conversão depende da arquitetura do processador em que o código assembly será executado. Abaixo, segue um exemplo de como a função em assembly poderia ser escrita em C para a arquitetura x86:
ong LotIndex(long Lot) { long Index = 0; char* Triangle = (char*)0x12345678; // endereço da variável Triangle while (Lot != 0) { if (Lot & 1) { Triangle += 4; } else { Index += *((int*)Triangle); Triangle += 128; } Lot >>= 1; } return (Index >> 16); }
Neste exemplo, a função em C tem a mesma assinatura da função em assembly, com um parâmetro do tipo
long
e um valor de retorno do tipolong
. A função usa uma variávelIndex
para acumular o valor da soma e um ponteiroTriangle
para apontar para a variável correspondente em memória. O endereço da variávelTriangle
foi definido como0x12345678
como exemplo. É necessário alterar esse valor para o endereço correto da variável na memória.A lógica do loop em C é equivalente à do loop em assembly. A verificação de paridade de
Lot
é realizada usando o operador&
para testar se o bit menos significativo é 1. A operação de deslocamento é realizada usando o operador>>
. As operações de adição e incremento de ponteiro são realizadas usando os operadores+
e+=
. O tipo do ponteiroTriangle
foi definido comochar*
, mas pode ser alterado para o tipo correto, dependendo da arquitetura e do tipo de dados armazenados na variável.Por fim, o valor retornado é obtido a partir do valor acumulado em
Index
e deslocado 16 bits para a direita, para obter a metade superior do valor.- 1
-
2 minutos atrás, Eolocos disse:
assim, se quiser usar o Diagrama de Venn, que o @sorel gosta tanto, fica mais fácil:
if ( $dezena ~ @array1 && $dezena ~ @array2 ) { push @array3, $dezena }
troço complicado, quando sorel aparecer vc se vira com ele tá, mas se vc entende isso deve ser facil entender o sorel
mas no caso acho que isso faz um força bruta testa dentro de um loop
em vba eu faço algo como
for c=1 to final
if combinação(bit(c)) then cont=cont+1combinação seria uma matriz com o tamanho da loteria com cada dezena setada em sua posição
mais ou menos isso
mas procesadores tem instruções proprias de comparar e contar bit em um intenge
eu uso isso para transformar a combinação em um inteiroFunction combin_para_inteiro(matriz1 As Range) As Long Dim i As Long Dim num As Long arr1 = matriz1.Value2 For i = 1 To UBound(arr1, 2) num = num + 2 ^ (arr1(1, i) - 1) Next i combin_para_inteiro = num End Function
- 1
- 1
-
2 minutos atrás, DixieJoe disse:
Mas, no momento, isso não é uma prioridade minha. Toma muito tempo e vai exigir mudanças grandes nas minhas rotinas.
Depois que ganhar e tiver tempo sobrando, quem sabe, kkkk
para mim tbm nao, só estou tentando aprender algo, e como vc sabe mesmo quando eu monto minhas coisas eu nao mexo com matrizes
mas ve issoCitartem como usar avx sse em Delphi?Sim, é possível usar instruções SIMD (Single Instruction, Multiple Data) como AVX e SSE em um programa Delphi usando as bibliotecas externas apropriadas. Existem várias bibliotecas disponíveis que oferecem suporte a instruções SIMD em Delphi, incluindo:
- Delphi SIMD Library: https://github.com/JackTrapper/Delphi-SIMD-Library
- Agner Fog's Vector Class Library for Delphi: https://www.agner.org/optimize/vectorclass/
Essas bibliotecas incluem rotinas otimizadas para operações comuns em vetores, como somas e produtos de ponto, usando instruções SIMD.
Para usar essas bibliotecas, você precisa incluir os arquivos de cabeçalho e as bibliotecas dinâmicas fornecidas em seu projeto Delphi e usar as funções fornecidas em suas rotinas.
Além disso, é importante notar que a capacidade de usar instruções SIMD depende do processador em que o código é executado. Nem todos os processadores suportam todas as instruções SIMD, e a detecção de recursos deve ser usada para garantir que as instruções adequadas estejam sendo usadas em cada plataforma.
- 1
-
6 minutos atrás, DixieJoe disse:
Ou separar em 2 pedaços de 64 bits e fazer a mesma coisa.
vc pode separar em 4 pedaços de 32 bit,
para falar a verdade acho que o avx e o sse fazem justamente isso, o avx trabalha com matrizes de 256bit e acho que tem até 512bit, mas isso dentro de uma matriz3 minutos atrás, Eolocos disse:mas o que é um bitcount ?
bit count é justamente isso, contagem de bit
imagina a lf como 15 bit =1 dentro de 25 bit1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
sseri igual a 1111111111111110000000000então seria contar os 1
sde pode comparar um binario com outro com and por exempro e vai resultar em um binario que só tem os 1 que caem na mesma possiçao do outro
- 1
-
4 minutos atrás, DixieJoe disse:
Pra mim, não quero falar com o ChatGPT, kkkk.
Achei esse código ai em cima, super complicado.
Acho que temos coisa mais enxuta.
mas aí que está, o gpt está mais para ajudar a entender como funciona
dll s são super praticas de usar
é a mesma coisa que uma função interna, só que ela está fora do programa principal , vc declara ela e a usa internamentemas a graça do gpt é que vc pode pegar exemplos de codigos
8 minutos atrás, DixieJoe disse:Na verdade, só preciso mesmo de uma unica função em Assembly para contar bits, passados dois valores.
E que pudesse aceitar valores até 100 (pensando na Lotomania).
o fato é que existe varias maneira de fazer isso, e tbm dependo do seu processador o uso de certas instruções
usando o gpt e o Delphi se pode pegar exemplos
para lm vc pode dividir as seções em 32 bit e somar as contagensSpoilerpreciso mesmo de uma unica função em Assembly para contar bits, passados dois valores. dentro de um codigo Delphi
CitarSim, é possível escrever uma função em assembly para contar o número de bits diferentes entre dois valores (também conhecido como distância de Hamming) em Delphi. Aqui está um exemplo de como fazer isso:
program CountBits; {$APPTYPE CONSOLE} uses SysUtils; function CountBits(a, b: Integer): Integer; asm push ebp mov ebp, esp sub esp, 4 xor eax, eax xor edx, edx mov ecx, 32 @loop: cmp ecx, 0 je @done mov ebx, a shr ebx, cl - 1 and ebx, 1 mov esi, b shr esi, cl - 1 and esi, 1 cmp ebx, esi jne @count jmp @next @count: inc eax @next: dec ecx jmp @loop @done: mov eax, [ebp - 4] add esp, 4 pop ebp end; var a, b: Integer; bits: Integer; begin a := 12345; b := 67890; bits := CountBits(a, b); WriteLn('The number of different bits between ', a, ' and ', b, ' is ', bits); ReadLn; end.
O código em Delphi define a função
CountBits
, que recebe dois parâmetros de entradaa
eb
, que são números inteiros, e retorna o número de bits diferentes entre esses dois números. A função é implementada em assembly e usa uma série de instruções lógicas para comparar os bits de cada número.A função usa um loop para comparar cada bit dos dois números. O loop começa com o valor 32 em
ecx
, que é o número de bits em um número inteiro de 32 bits. A cada iteração do loop, a função usa as instruçõesshr
eand
para obter o valor do bit atual dea
eb
, compara esses valores usando a instruçãocmp
e incrementa o contador de bits diferentes emeax
, se os valores são diferentes. A função continua a percorrer os bits, decrementandoecx
em cada iteração, até que todos os bits tenham sido comparados.Depois de contar o número de bits diferentes, a função coloca o valor em
eax
e retorna. O código em Delphi chama a funçãoCountBits
com dois valores de exemplo e imprime o resultado na tela.mas existe avx2, sse, que fornece instruções própria dentro do processador que são mais rapidas , mas dependem se o processador tem as instruções
o metodo de tabela , contagem bit a bit
- 1
-
no caso so assembly o certo é fazer uma função em DLL para outros programas usarem no caso se pode implementar em planilhas e até no Delphi
dll são bibliotecas dinâmicas externas, vc pode programar elas em qualquer linguagem compilada e usar em outros programas , mesmo numa planilha- 1
-
6 minutos atrás, DixieJoe disse:
Eu não estou gostando de usar o ChatGPT. Por enquanto, só tenho retornos que não ajudam muito.
Vou esperar ele "evoluir".... kkkk
bem, tem que aprender a falar com ele
por exemplo, eu tive que mudar o pedido para ele gerar algo dentro dos parâmetrosCitaro que eu quero é um codigo em assembly que gere todas as combinações de 15 numeros de 1 a 25 , mas no formato binario em inteiro, mas tem que estar dentro de uma função CEntendi. Aqui está um exemplo de código em assembly que gera todas as combinações de 15 números de 1 a 25 no formato binário em inteiro, dentro de uma função
#include <stdio.h> void generate_combinations(int* combinations) { __asm__( ".intel_syntax noprefix\n" "push rbp\n" "mov rbp, rsp\n" "sub rsp, 16\n" "mov QWORD PTR [rbp-8], rdi\n" "mov eax, 0\n" "mov ecx, 0\n" "mov edx, 15\n" "mov esi, 1\n" "mov edi, 1\n" "jmp .outer_loop\n" ".inner_loop:\n" "test esi, esi\n" "jle .outer_loop\n" "shl eax, 1\n" "mov ebx, DWORD PTR [rbp-4]\n" "add ebx, edi\n" "mov ebx, DWORD PTR [rbx]\n" "cmp ebx, 25\n" "jg .next\n" "inc eax\n" "mov ebx, DWORD PTR [rbp-4]\n" "add ebx, edi\n" "mov ecx, DWORD PTR [rbp-8]\n" "mov edx, eax\n" "add ecx, edx\n" "mov DWORD PTR [ecx*4], ebx\n" "inc edi\n" "dec esi\n" "jmp .inner_loop\n" ".next:\n" "inc edi\n" "mov ebx, DWORD PTR [rbp-4]\n" "add ebx, edi\n" "cmp ebx, DWORD PTR [rbp+8]\n" "jg .done\n" "jmp .outer_loop\n" ".outer_loop:\n" "cmp edx, 0\n" "jle .done\n" "mov esi, edx\n" "mov eax, 0\n" "mov edi, 1\n" "jmp .inner_loop\n" ".done:\n" "add rsp, 16\n" "pop rbp\n" ".att_syntax prefix\n" ); } int main() { int combinations[15]; generate_combinations(combinations); for (int i = 0; i < 15; i++) { printf("%d ", combinations[i]); } printf("\n"); return 0; }
O código acima implementa a função
generate_combinations
em assembly, que recebe um ponteiro para um array de 15 inteiros e preenche esse array com todas as combinações de 15 números de 1 a 25 no formato binário em inteiro. O código em C chama essa função e imprime o resultado na tela.O código em assembly usa dois loops aninhados para gerar as combinações. O loop externo controla o número de elementos na combinação, que começa em 15 e vai decrescendo até 1. O loop interno adiciona cada elemento à combinação e avança para o próximo elemento. O loop interno usa a instrução
shl
para deslocar o valor atual da combinação uma posição para a esquerda e a instruçãomov
para carregar o próximo elemento do array de números. Se o próximo elemento for maior que 25, o loop inter- 1
-
só tem que tomar cuidado com o gpt pq as vezes ele gera umas respostas nada a ver,
tipo eu pedi isso:
Citarvoce consegue criar um codigo assembly para ser usado em no C que gere todas as combinações de 15 numeros de 1 a 25?
e ele fez isso
section .data num_array: db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 comb_array: times 15 db 0 section .text global generate_combinations generate_combinations: mov rdi, comb_array mov rsi, 15 call generate_combinations_recursive ret generate_combinations_recursive: push rbp mov rbp, rsp sub rsp, 32 mov rcx, [rbp + 8] ; número de elementos a serem escolhidos cmp rcx, 0 je .end mov rdx, [rbp + 16] ; ponteiro para o array de combinações atual mov r8, num_array mov r9, [rbp + 24] ; tamanho do array de números possíveis mov rax, 0 ; índice do número atual .next_num: cmp rax, r9 jge .end_loop movzx ecx, byte [r8 + rax] ; número atual movzx edx, byte [rdx + rcx * 1] ; valor já escolhido cmp edx, 0 jne .next_num_loop ; número já foi escolhido mov byte [rdx + rcx * 1], cl ; adiciona número atual à combinação mov rcx, rcx - 1 ; decrementa contador call generate_combinations_recursive ; recursão mov byte [rdx + rcx * 1], 0 ; remove número atual da combinação add rcx, 1 ; incrementa contador .next_num_loop: add rax, 1 ; incrementa índice jmp .next_num .end_loop: leave ret .end: leave ret
acho que isso é vbnet kkkkk
mas aí é só pedi para gerar novametne- 1
-
17 minutos atrás, DixieJoe disse:
Mas não chega nem perto do Assembly e quem sabe, nem do C.
voce tem um codigo que gera as combinações em assembly né, se puder passar para eu ver se o gpt faz uma analise e poder passar para uma dll em c
- 1
-
7 minutos atrás, DixieJoe disse:
Quem dominar C ou Assembly (seria mais rápido ainda se feito em Assembly) e conseguir integrar essa função (seja em planilha, DLL ou noutra linguagem) vai ter progamas super rápidos para estudar e montar jogos.
Vale muito a pena aprender o básico com bits para criar funções e DLLs, com certeza.
nao sei programar em c, nisso o chat gpt tá fazendo o trabalho, sabendo o basico da programação dá para pegar oq ela faz e montar algo completo
a ia tbm faz em outras linguagens, talvez possa te ajudar a melhorar seus codigos te dando exemplos para instruções focadas em avx, sse , mult processamentoa ia é uma ajuda e tanto
- 1
-
alguem sabe me dizer se isso está certo?
Citarqual o valor maximo de um int de 32 bit que tenha 15 bit setado?Um inteiro de 32 bits com 15 bits definidos como 1 tem 17 bits restantes que podem ser definidos como 0 ou 1.
O valor máximo que um inteiro de 32 bits pode representar é (2^32) - 1, que é 4294967295 em decimal.
Para calcular o valor máximo que um inteiro de 32 bits com 15 bits definidos como 1 pode ter, podemos considerar que os 15 bits definidos como 1 devem estar nas posições mais significativas.
Assim, o valor máximo que um inteiro de 32 bits com 15 bits definidos como 1 pode ter é:
(1 << 15) - 1) << 17 + (1 << 17) - 1
Isso pode ser simplificado para:
4294705151
Portanto, o valor máximo de um inteiro de 32 bits com 15 bits definidos como 1 é 4294705151 em decimal.
Citarde 25 bit e 15 bit setados ?Da mesma forma que no caso anterior, um inteiro de 25 bits com 15 bits definidos como 1 tem 10 bits restantes que podem ser definidos como 0 ou 1.
O valor máximo que um inteiro de 25 bits pode representar é (2^25) - 1, que é 33554431 em decimal.
Para calcular o valor máximo que um inteiro de 25 bits com 15 bits definidos como 1 pode ter, podemos considerar que os 15 bits definidos como 1 devem estar nas posições mais significativas.
Assim, o valor máximo que um inteiro de 25 bits com 15 bits definidos como 1 pode ter é:
(1 << 15) - 1) << 10 + (1 << 10) - 1
Isso pode ser simplificado para:
65407
Portanto, o valor máximo de um inteiro de 25 bits com 15 bits definidos como 1 é 65407 em decimal.
o ruim do gpt é que quando a gente nao sabe muito sobre o assunto ficamos sem saber se a ia está nos trollando
queria ver se tem como definir um codigo para gerar só os inteiros ou binários que tenham 15 bit setados, para fazer um conferidor de matrizes
- 1
-
o legal do chat gept é que vc tem a resposta gerada para a pergunta que voce faz
então fica mais facil voce entender e aprender
quando se faz busca pela internet a gente tem que ficar filtrando as paginas para ver se realmente fala sobre o assunto pesquisado, tem que filtrar os que tem uma linguagem que voce entenda, tem que filtrar se a informação é realmente relevanteacho que para evitar tretar o gpt tinha que parar ficar fazer trabalhos completos, se for só uma ferramenta de pesquisa e estudo é muito bem vindo
- 1
-
algum programador já usou contagem de bits em C para conferencia em loterias?
quais métodos implementaram?
é bom na velocidade ou nao é coisa de outro mundo?
vale a pena implementar?@Jimmy seria bom mudar o nome mudar o nome dessa seção para "programas & programação para loterias, assim atenderia tbm a implementação de codigos
- 4
-
2 minutos atrás, Sphgf disse:
sim, mas a questão continua a mesma, como eles ficam ?
afinal o gpt é muito melhor, nao só te entrega um codigo que vc tem qu saber como montar, vc pode bater um papo com ele trocando ideias pedindo opiniões e pedir a ele para montar um codigo até misturando linguagens com a ideia que foi discutida
esse outro mesmo para descrever o codigo que vc sabe fica dificil -
queria saber como fica a askjarvis com o surgimento do chatgpt que ao meu ver é bem melhore com menos limitações
mas mesmo assim , isso de programar em C é cheio de complicações
instalei o compilador, instalei umas 2 ide para ver se facilita
isso com a ajuda do gpt que apesar de as vezes dar uns furos ainda ajuda legalmas e para ter o codigo compilado em exe ou dll?
o treco compila faz os testes mas cade a merda do programa compilado?
com o gpt eu posso ter exemplos de codigos do que eu quero montar e modificar , mas essa complicação de ter o programa em mãos é osso- 1
Transformada de Laplace em loterias
in Tudo sobre Loterias
Posted
o bom é que voce pode pedir para ela transformar o que ela explicou em um codigo ou função vba para se testar na planilha para ver como se comporta