Skip to content

Instantly share code, notes, and snippets.

View wende's full-sized avatar

Krzysztof Wende wende

  • Neon Tree Solutions Ltd.
  • Gdańsk, Poland
View GitHub Profile
@spec chunk(t, pos_integer, pos_integer, t | nil) :: [list]
def chunk(enumerable, count, step, leftover \\ nil)
when is_integer(count) and count > 0 and is_integer(step) and step > 0 do
limit = :erlang.max(count, step)
{acc, {buffer, i}} =
reduce(enumerable, {[], {[], 0}}, R.chunk(count, step, limit))
if is_nil(leftover) || i == 0 do
:lists.reverse(acc)
module Main where
import Prelude
import Data.Maybe
import Control.Monad.Eff
import Data.Maybe.Unsafe
import Data.Nullable (toMaybe)
import qualified Thermite as T
def common_root(xs, root), do: common_root(xs, root, String.length(root))
def common_root([h | _] = xs, root \\ "", length \\ 0) do
newroot = elem(String.split_at(h, length + 1), 0)
if Enum.all?(xs, &String.starts_with?(&1, newroot)) do
common_root(xs, newroot, length + 1)
else
root
end
end
defmodule Queue do
@moduledoc ~S"""
Elixir wrapper around Erlang's 'queue' module, following the convention of pipe operator
This module implements (double ended) FIFO queues in an efficient manner.
All functions fail with reason badarg if arguments are of wrong type, for example queue arguments are not queues, indexes are not integers, list arguments are not lists. Improper lists cause internal crashes. An index out of range for a queue also causes a failure with reason badarg.
Some functions, where noted, fail with reason empty for an empty queue.
defmodule Queue do
@moduledoc """
Elixir wrapper around Erlang's 'queue' module, following the convention of pipe operator
"""
@functions :queue.module_info(:exports)
Enum.map @functions, fn
{:module_info, _} -> 0
{name, 0} -> def unquote(name)(), do: apply(:queue, unquote(name), [])
defmodule Queue do
@functions :queue.module_info(:exports)
Enum.map @functions, fn
{:module_info, _} -> 0
{name, 0} -> def unquote(name)(), do: apply(:queue, unquote(name), [])
{name, 1} -> def unquote(name)(x), do: apply(:queue, unquote(name), [x])
{name, 2} -> def unquote(name)(x,y), do: apply(:queue, unquote(name), [y, x])
end
end
defmodule Queue do
@functions :queue.module_info(:exports)
Enum.map @functions, fn
{:module_info, _} -> 0
{name, 0} -> def unquote(name)(), do: apply(:queue, unquote(name), [])
{name, 1} -> def unquote(name)(x), do: apply(:queue, unquote(name), [x])
{name, 2} -> def unquote(name)(x,y), do: apply(:queue, unquote(name), [y, x])
end
end
defmodule Queue do
@functions :queue.module_info(:exports)
Enum.map @functions, fn
{:module_info, _} -> 0
{name, 0} -> def unquote(name)(), do: apply(:queue, unquote(name), [])
{name, 1} -> def unquote(name)(x), do: apply(:queue, unquote(name), [x])
{name, 2} -> def unquote(name)(x,y), do: apply(:queue, unquote(name), [y, x])
end
end
defmodule Queue do
@functions :queue.module_info(:exports)
Enum.map @functions, fn
{:module_info, _} -> 0
{name, 0} -> def unquote(:"#{name}")(), do: apply(:queue, unquote(name), [])
{name, 1} -> def unquote(:"#{name}")(x), do: apply(:queue, unquote(name), [x])
{name, 2} -> def unquote(:"#{name}")(x,y), do: apply(:queue, unquote(name), [y, x])
end
end
public static void main(String[] args)
{
PunktMaterialny pkt = new PunktMaterialny(); //klasa z konstruktorem domyślnym
pkt.setMasa(5);
pkt.mombez();
pkt.opis();
PunktMaterialny pkt2 = new PunktMaterialny(8); //klasa z konstruktorem z parametrem
pkt2.opis();
pkt.setMasa(3); //zmiana masy w pierwszym obiekcie