Skip to content

Instantly share code, notes, and snippets.

View polvalente's full-sized avatar

Paulo Valente polvalente

View GitHub Profile
@polvalente
polvalente / code.exs
Created June 21, 2023 00:21
code-golf with error handling solution
# To-Do app
run = fn run_fn, state ->
case IO.gets("Choose one of the following options:\n1. List TO-DOs\n2. Add a new TO-DO\n3. Mark TO-DO as completed\n4. Delete TO-DO.\n5. Exit\n>> ") |> String.trim() do
"1" ->
state.to_dos
|> Enum.reverse()
|> Enum.with_index()
|> Enum.map_join("\n", fn {%{todo: todo, completed: completed}, idx} ->
"#{idx}. #{todo} [#{if(completed, do: "✔", else: " ")}]"
@polvalente
polvalente / code.exs
Created June 21, 2023 08:59
Nx (?!) solution for to-do app
# To-Do app
Mix.install [:exla, {:nx, github: "elixir-nx/nx", sparse: "nx", override: true}]
max_todo_length = 5
max_todos = 10
run = fn run_fn, state ->
case IO.gets("Choose one of the following options:\n1. List TO-DOs\n2. Add a new TO-DO\n3. Mark TO-DO as completed\n4. Delete TO-DO.\n5. Exit\n>> ") |> String.trim() do
"1" ->
todos = if state.count > 0, do: Nx.to_list(state.to_dos[0..(state.count - 1)]), else: []
@polvalente
polvalente / main.cpp
Created December 7, 2023 13:08
First Fibonnaci index with 1000 digits
#include <cmath>
#include <iostream>
#include <vector>
const uint64_t MAX_UINT64 = std::numeric_limits<uint64_t>::max();
uint64_t numDigits(std::vector<uint64_t> num) {
// num is described by num[0] + num[1] * MAX_UINT64 + num[2] * MAX_UINT64^2 + ...
if (num.empty()) return 0;
@polvalente
polvalente / einsum_to_tensordot.py
Created March 1, 2024 23:35
Equivalência de tensordot para einsum
In [1]: import torch
In [2]: a = torch.arange(3, 4, 5)
In [3]: a = torch.arange(60).reshape(3, 4, 5)
In [4]: b = torch.arange(24).reshape(1, 4, 3, 2)
# Aqui, (junto com o output da linha Out[7]) a gente vê que
# que o tensordot usando contraction axes específicas tem
# esse resultado.