Skip to content

Instantly share code, notes, and snippets.

View bagart's full-sized avatar
🏠
Working from home

BAGArt bagart

🏠
Working from home
View GitHub Profile
@bagart
bagart / encapsulation_hack.php
Last active January 31, 2018 09:51
private access in PHP / encapsulation hack
<?php
declare(strict_types=1);
final class A {
private $prop;
public function __construct(DateTime $prop) { $this->prop = $prop; }
public function getProp() { return $this->prop; }
}
$a = new A(new DateTime());
<?php
// https://3v4l.org/0Fonp
$x = 1.999999999999999;
$y = 2;
var_dump([
'float: 1.999999999999999' => [
'serilize' => [$x, 'orig' => serialize($x), 'int' => serialize((int)$x), 'round' => serialize(round($x)), $x < 2],
'int' => [(int)$x, (int)$x < 2],
'string'=>[(string)$x, (string)$x < 2],
@bagart
bagart / DoubleLinked.php
Last active September 2, 2018 20:56
DoubleLinked.php with not numeric keys
<?php declare(strict_types=1);
class DoubleLinkedException extends \Exception
{
}
class WrongNameDoubleLinkedException extends DoubleLinkedException
{
}
<?php
function dont_give_me_five(int $start, int $end): int
{
$start_multiple = $start < 0 ? -1 : 1;
$end_multiple = $end < 0 ? -1 : 1;
$zero_value = (int)(
$start_multiple !== $end_multiple
|| false === strpos((string)min(abs($start), abs($end)), '5')
);
@bagart
bagart / php7+.php
Last active November 9, 2018 22:36
array with double key
<?php
class A {
private $omg = 'A';
function dump() {
return get_object_vars($this);
}
}
@bagart
bagart / has_factor.php
Last active December 6, 2018 12:50
big number has a has_factor
<?php
function chk_simple(int $value): bool {
$square_root_of_value = sqrt($value);
if (!($value % 2) ||!($value % 3) || $square_root_of_value === ceil($square_root_of_value)) {
return false;
}
$square_root_of_value = (int)$square_root_of_value;
$del3 = 0;
@bagart
bagart / averia-task.md
Last active February 20, 2019 13:07 — forked from AlexGx/averia-task.md

Тестовое задание averia-task

устройство отправляет сообщения (назовем их пакеты) с навигационными данными и данными об активности

  • пакеты могут дублироваться
  • пакеты могут прийти не в хронологическом порядке

авторизационные данные находятся в заголовке HTTP, payload в теле сообщения, все как обычно

существует 2 вида пакетов:

@bagart
bagart / m3u_content_downloader.php
Last active September 30, 2019 16:38
vk music downloader (однопоточный)
<?php
# Download m3u with https://t.me/BeatSpotBot
ini_set('memory_limit', '1G').
$PATH_DOWNLOAD = './download';
$PLAYLIST_FILENAME = 'playlist.m3u8';
$EXIT_ON_DOUBLE = false;
$STRIP_SOURCE = true;
$STRIP_NAME = true;
$SKIP_DOWNLOAD_REPEAT = true;
@bagart
bagart / 5 moves.php
Created September 18, 2020 19:22
Найти два наименьших числа, которые начинаются на 5 и из которых, перенеся первую цифру в конец, можно получить новое число, в 5 раз меньшее, чем искомое
<?php
//Найти два наименьших числа, которые начинаются на 5 и из которых, перенеся первую цифру в конец, можно получить новое число, в 5 раз меньшее, чем искомое
$result = null;
$cur = null;
$i = 0;//check for infinity loop
//while ($i < 9999999) {
$cur .= '5';
while (++$i && substr($cur, -2) !== '75') {
$mem = (int)substr($cur, -3);
@bagart
bagart / random3.php
Last active October 7, 2021 16:45
random3 and random4 from random2
<?php
echo "Задача: написать random3() и random4() возвращающие равновероятные значения используя только random2()\n";
echo random2() . " - random 0|1\n";
echo random3() . " - random 0|1|2\n";
echo random4() . " - random 0|1|2|3\n\n";
function random2(): int
{
return random_int(0, 1);