Jump to content
php.lv forumi

Recommended Posts

Posted

Uzdevums ir sekojošs:

 

Ir vārds "foo". Vajag uzrakstīt programmu, kas saņem uz input (vai kā argumentu, vienalga) integer skaitli n > 1. Programmai vajag izvadīt n rindas, pirmā no kurām ir jābūt n reizes vārdam "foo", otrā rindā n-1 reizes utt, pēdējā rindā vārdam foo ir jābūt tikai vienu reizi.

 

Piemērs:
> foo 3
foofoofoo

foofoo

foo

 

Svarīgākais nosacījums programmai: tai ir jābūt pēc iespējas obfuscētai. Bez koda aizkodēšanas un ievērojot koda standartus (indents utt) ir jāpanāk to, lai kods izskatītos maksimāli sarežģīti, lai cilvēks no malas ar lielām grūtībām varētu saprast, ko programma dara.

 

Izmantot var conventional, lasāmas valodas, nevar izmantot brainf**k vai līdzīgus.

Posted

Svarīgākais nosacījums programmai: tai ir jābūt pēc iespējas obfuscētai. Bez koda aizkodēšanas un ievērojot koda standartus (indents utt) ir jāpanāk to, lai kods izskatītos maksimāli sarežģīti, lai cilvēks no malas ar lielām grūtībām varētu saprast, ko programma dara.

A jēga uzdevumam jebšu kam tas domāts/plānots?

Jo nu tikpat labi vari paņemt linux kerneli, tad un vienā C failā tur iebakstīt printf("foofofooo\n") (protams ar pārējiem vipendroniem) .. tb skatīt Master Programmer @ http://roze.lv/Evolucija.txt

Posted


class ProcessInput

{

/**

* @var array

*/

private $mapDec = [];

/**

* @var int

*/

private $multiple;

 

/**

* @param array $mapDec

* @param int $multiple

*/

public function __construct(array $mapDec, $multiple)

{

$this->mapDec = $mapDec;

$this->multiple = $multiple;

}

 

/**

* @param string $destination

*/

public function exec($destination)

{

$memStream = $this->openStream();

 

for ($i = $this->multiple; $i > 0x0; $i += -1) {

fwrite($memStream, $this->getMapping($i));

}

 

rewind($memStream);

 

$this->safeCopyStream($memStream, $destination);

 

fclose($memStream);

}

 

/**

* @param int $r

* @param int $ii

* @return null|string

*/

private function doMap($r, $ii)

{

return (~(-$ii) + 1) % $r === 0x0 && $ii / $r === 0x1 ? chr($ii * 0x1) : null;

}

 

/**

* @return resource

*/

private function openStream()

{

return fopen('php://memory', 'rw');

}

 

/**

* @param $memStream

* @param $destination

*/

private function safeCopyStream($memStream, $destination)

{

if ($memStream && $destination) {

$targetStream = fopen($destination, 'w');

if ($targetStream) {

stream_copy_to_stream($memStream, $targetStream);

fclose($targetStream);

}

}

}

 

/**

* @param int $i

* @return string

*/

private function getMapping($i)

{

$buffer = [];

for ($ii = 0; $ii <= 0xFF; $ii++) {

 

$result = array_map(function ($r) use ($ii) {

return $this->doMap($r, $ii);

}, $this->mapDec);

 

$filtered = array_filter($result);

 

if ($filtered) {

$buffer[$ii] = implode($result);

}

}

 

return str_repeat(implode($buffer), ($i * 0x1)) . PHP_EOL;

}

}

 

$bMap = [

0b01101111,

0b01100110,

0b01101111,

];

 

(new ProcessInput(

$bMap,

$argv[1]

))->exec('php://stdout');

 

Posted
const f = (n, c) => Array(c).fill().map((v,k)=>Array(c-k).fill(n).join('')).join(String.fromCharCode(10))

console.log(f('foo', 4))

JavaScript 87%77 :>

Posted

Jāatkārto Rozes teiktais - kāda ir uzdevuma jēga?

Praktisks tas viennozīmīgi nav. Ko no šāda uzdevuma ir domāts iemācīties? Kā rakstīt nevajadzīgi sarežģītu kodu?

Posted
function foo($bar)
{
	$i = 0;
	$t = $bar;

	echo str_repeat(('b' | 'd').('n' | 'k').('g' | 'm'), $bar).'<br>';
	
	do
	{
		$bar = $bar ^ 1 << $i;
	} 
	while (!($t & 1 << $i++));
	
	if ($bar) foo($bar);
}

foo(4);

slinkums kaut ko izdomāt...

Posted

Jāatkārto Rozes teiktais - kāda ir uzdevuma jēga?

Praktisks tas viennozīmīgi nav. Ko no šāda uzdevuma ir domāts iemācīties? Kā rakstīt nevajadzīgi sarežģītu kodu?

Varbut cilveks iet prom no darba un grib maksimali labi izpildit savu pedejo uzdevumu
Posted (edited)

A jēga uzdevumam jebšu kam tas domāts/plānots?

For fun. Nekādas jēgas nav. Varbūt tikai parādīt, cik labi cilvēks prot valodu un visādus valodas knifiņus.

 

Mans variants:

import Data.Char
import System.Environment

fib = 1 : scanl (+) 1 fib

foo = map (chr . fromIntegral . (*3)) $ f : replicate 2 (f + 3)
    where
        f  = fib !! ((>>= id) (.) (fromIntegral . (!!) fib) 4)

output = mapM_ print . reverse . map ((>> foo) . e1) . e1
    where
        e1 = enumFromTo 1

main = getArgs >>= output . read . head

usage:

./foo 3
Edited by Леший
Posted
Kaut kas starp woo un codez sanāca
const f = (n, c) => Array(c).fill().map((v,k)=>Array(c-k).fill(n).join('')).join('\n')
console.log(f('foo', 4))

Nē, tev tur rekursīvi strādā, shorthand pārbaudes un mutācijas.

codez atkal neaizsargā b parametru, kas nav pareizi. Imho, kāds to b var ierakstīt. console.log(f("foo",3, 7)). Papildus ir nevajadzīgs newline beigās. Tikai bez stresa.

 

 

Posted

Bet Wuu "neaizsargā" c parametru ("whatever it means") - kāds var ierakstīt f("foo","bar")

 

Ideja ir ļoti vienkārša, nedot pieeju parametriem un iekšējām funkcijām kurām nav jābūt pieejas no ārpasaules.  

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...