(Javascript) Pegar digito de número sem strngs

Consegui criar outra função em javascript relacionada a números sem manipulação de strings. Já pensou como pegar um digito de um número sem precisar transformar o número em strings? Fácil, utilizando uma lógica que percebi podemos facilmente fazer isto


Espero que tenham gostado da dica. Abraço

(Javascript) Concatenar números sem strings

Fazendo cálculos de conhecendo melhor as funções de logaritmas, criei um concantenador de números utilizando  apenas cálculos matemáticos!

Segue aqui um exemplo

f(20,13) = 2013
f(14,50) = 1450
f(35448348, 483834846) = 35448348483834846

Aqui o código para função


Estudem o código. Me ajudou bastante a compreender a lógica de algumas outras coisas. O código veio a partir da função length que eu realmente usei logaritmos. :)


(Javascript) toFixed Equivalente

Aqui uma função similar a toFixed. Só que apenas com cálculos matemáticos! Código está em javascript.




Ela simplesmente deixa X números após a virgula

f(15.4848, 1) fará 15.4
f(15.4848, 2) fará 15.48

Assim por diante. Espero que gostem.

Abraços

(Outros) Dicas para artigos

Então leitores, como podem ver estou meio sem tempo para fazer projetos, bem como sem idéias. Pensando nisto venho criar este artigo com a oportunidade de  você dar uma ideia de um projeto para eu fazer (não irei fazer twitter tools)


Espero que dêem sugestões interessantes, também não muito avançadas por eu não ter tempo demasiado para criar tal projeto e artigo

Coloquem um comentário abaixo, sugerindo um código/projeto que pensa que eu deveria ensinar, explicar ou fazer para coloca-lo em um artigo.

Espero que gostem da oportunidade e opinem. Abraços

(Javascript) Pegar posição de número impar

Este código é meio inútil, mas é bom para treinar a lógica. Serve como desafio, por exemplo.

O código a seguir pega a posição de um número impar na sequencia de números impars

{1 ,3,5,7,9,11,13,15 ... }

(Javascript) ProgressBar em Canvas

Consegui criar uma biblioteca (função objeto) que faz um sistema de progressbar simplificadamente, você pode especificar o estilo da progressBar e utilizar como desejar



Basicamente basta usar
createProgressBar(x, y, largura, altura, color, maximo, canvasid)

Sendo x,y posição da barra de progresso na área canvas; largura e altura da progressbar, color é a cor da mesma; máximo o valor máximo que ela pode chegar; e canvasid é o elemento html que usa tag canvas, coloque o id do mesmo

Depois basta utilizar a função obj.updateProgress que irá adicionar +1 na progressBar e retornar uma condicional, caso verdadeiro o valor máximo da barra de progresso ainda não foi atingido, caso contrário, foi.

A função showText serve para mostrar um texto abaixo da barra, mostrando a porcentagem atual. Quaisquer dúvidas, coloquem um comentário, responderei. Os erros estão sendo fixados (não achei nenhum até agora, mas pode haver por ser um sistema de difícil construção e bastante frágil)

(Javascript) Detectar colisão em Canvas

Fiz um código com explicação de como fazer elementos simples no canvas, criar "vida" aos mesmos e até detectar se há colisão entre um e outro.

Segue o código abaixo com as explicações incorporadas.



Abraços

(Javascript) Lista Encadeada/Ligada em JS

Consegui implementar um sistema de lista encadeada em javascript, de forma bastante eficiente, conseguimos atingir velocidades em loopings extremas, segue um código test



<script>



// Criação da array especial com 2000 elementos
var arrSpecial = new Array(2000);

// Criar variáveis que possam ser passadas por referencia na função intervalChangeItter
var arrInit = new Object();
var arrFinal = new Object();

// Preparar propriedade do objeto com valor inicial -1
arrInit.referencia = -1;
arrFinal.referencia = -1;

// Colocar números a serem passados
intervalChangeItter(arrSpecial, 3, arrInit, arrFinal);
intervalChangeItter(arrSpecial, 7, arrInit, arrFinal);
intervalChangeItter(arrSpecial, 9, arrInit, arrFinal);
intervalChangeItter(arrSpecial, 10, arrInit, arrFinal);

// Executar o loop lista encadeada
document.write("Usando Lista Encadeada:<br/>")
for(var i = arrInit.referencia ; i != undefined; i = arrSpecial[i ]) {
 document.write(i + "<br/>")
}

// Executar o for each
i = 0;
document.write("Usando Foreach:<br/>")
for(var i in arrSpecial) {
 document.write(arrSpecial[i ] + "<br/>")
}

// Executar o for COMUM
i = 0;
document.write("Usando FOR comum:<br/>")
for(i = 0; i < arrSpecial.length; i++) {
 document.write(arrSpecial[i ] + "<br/>")
}

// Funcao
function intervalChangeItter(array, valor, inicio, ultimoNumeroVar) {

 if (array[valor] != undefined || valor == undefined) 
  return false;

 if (inicio.referencia == -1) {
  inicio.referencia = valor;
  return true;
 }

 if (valor < inicio.referencia) {
  array[valor] = inicio.referencia;
  return inicio.referencia = valor, true;
 }

 if (array[inicio.referencia] == undefined) {
  array[inicio.referencia] = valor
  ultimoNumeroVar.referencia = valor
  return true;
 }

 array[ultimoNumeroVar.referencia] = valor
 ultimoNumeroVar.referencia = valor

 return true;
}

</script>

Resultados:
64 ms-> Lista Encadeada
4911 ms -> Foreach
51893 ms-> For Comum
Rápido, não?
Quando puder coloco mais modificações e otimizações, por enquanto é isto