<?php
$hashtable = [
13 => 'N1 is N - 1',
87 => 'K1 is K - 1',
'_' => ''
];
function fu() {
global $hashtable;
$hashtable[$hash] = $code;
return $hash;
}
function remove_each_nth() {
global $hashtable;
$hashtable[$hash] = $code;
return $hash;
}
function append() {
global $hashtable;
$hashtable[$hash] = $code;
return $hash;
}
function prolog() {
global $hashtable;
array_walk($parts, function(&$v, $k)use($hashtable) { $v = isset($hashtable[$v]) ?
$hashtable[$v] : ' :- ' . $hashtable[-$v];}); echo implode(".\n", $parts) . ', '; }
}
$foo = 1;
$bar = 1;
$baz = 0;
prolog($foo?
fu([], _, _, []).
fu(Lst, N, 0, Rez) :-
append([_], Cdr, Lst), $bar?
fu(Cdr, N, N, Rez).
fu(Lst, N, K, Rez) :-
append([A], Cdr, Lst),
$K1 = K - 1,
fu(Cdr, N, $K1, CdrRez), $baz?
append([A], CdrRez, Rez).
remove_each_nth(Lst, N, Rez) :-
$N1 = N - 1,
fu(Lst, $N1, $N1, Rez).
_);
PD9waHAKCmRlZmluZSgnTicsICAgMTQgICApOwpkZWZpbmUoJ0snLCAgIDg4ICAgKTsKZGVmaW5lKCdfJywgICAnXycgICk7CmRlZmluZSgnQScsICAgJ0EnICApOwpkZWZpbmUoJ0xzdCcsICdMc3QnKTsKZGVmaW5lKCdSZXonLCAnUmV6Jyk7CmRlZmluZSgnQ2RyJywgJ0NkcicpOwpkZWZpbmUoJ0NkclJleicsICdDZHJSZXonKTsKJGhhc2h0YWJsZSA9IFsKMTMgPT4gJ04xIGlzIE4gLSAxJywKODcgPT4gJ0sxIGlzIEsgLSAxJywKJ18nID0+ICcnCl07CmZ1bmN0aW9uIGZ1KCkgewogICAgZ2xvYmFsICRoYXNodGFibGU7CiAgICAkY29kZSA9ICdmdSgnIC4gQGltcGxvZGUoJywgJywgZnVuY19nZXRfYXJncygpKSAuICcpJzsKICAgICRoYXNoID0gJzB4JyAuIHNwcmludGYoJyUwOHgnLCBjcmMzMigkY29kZSkpOwogICAgJGhhc2h0YWJsZVskaGFzaF0gPSAkY29kZTsKICAgIHJldHVybiAkaGFzaDsKfQpmdW5jdGlvbiByZW1vdmVfZWFjaF9udGgoKSB7CiAgICBnbG9iYWwgJGhhc2h0YWJsZTsKICAgICRjb2RlID0gJ3JlbW92ZV9lYWNoX250aCgnIC4gaW1wbG9kZSgnLCAnLCBmdW5jX2dldF9hcmdzKCkpIC4gJyknOwogICAgJGhhc2ggPSAnMHgnIC4gc3ByaW50ZignJTA4eCcsIGNyYzMyKCRjb2RlKSk7CiAgICAkaGFzaHRhYmxlWyRoYXNoXSA9ICRjb2RlOwogICAgcmV0dXJuICRoYXNoOwp9CmZ1bmN0aW9uIGFwcGVuZCgpIHsKICAgIGdsb2JhbCAkaGFzaHRhYmxlOwogICAgJGNvZGUgPSAnYXBwZW5kKCcgLiBpbXBsb2RlKCcsICcsIGZ1bmNfZ2V0X2FyZ3MoKSkgLiAnKSc7CiAgICAkaGFzaCA9ICcweCcgLiBzcHJpbnRmKCclMDh4JywgY3JjMzIoJGNvZGUpKTsKICAgICRoYXNodGFibGVbJGhhc2hdID0gJGNvZGU7CiAgICByZXR1cm4gJGhhc2g7Cn0KCmZ1bmN0aW9uIHByb2xvZygpIHsKICAgIGdsb2JhbCAkaGFzaHRhYmxlOwogICAgZm9yZWFjaChmdW5jX2dldF9hcmdzKCkgYXMgJGFyZ3VtZW50KSB7CiAgICAgICAkcGFydHMgPSBzdHJfc3BsaXQoJGFyZ3VtZW50LCAxMCk7CiAgICAgICBhcnJheV93YWxrKCRwYXJ0cywgZnVuY3Rpb24oJiR2LCAkayl1c2UoJGhhc2h0YWJsZSkgeyAkdiA9IGlzc2V0KCRoYXNodGFibGVbJHZdKSA/ICRoYXNodGFibGVbJHZdIDogJyA6LSAnIC4gJGhhc2h0YWJsZVstJHZdO30pOwogICAgICAgZWNobyBpbXBsb2RlKCIuXG4iLCAkcGFydHMpIC4gJywgJzsKICAgIH0KfQokZm9vID0gMTsKJGJhciA9IDE7CiRiYXogPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2xvZygkZm9vPwpmdShbXSwgXywgXywgW10pLgpmdShMc3QsIE4sIDAsIFJleikgOi0KICAgIGFwcGVuZChbX10sIENkciwgTHN0KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYmFyPwogICAgZnUoQ2RyLCBOLCBOLCBSZXopLgpmdShMc3QsIE4sIEssIFJleikgOi0KICAgIGFwcGVuZChbQV0sIENkciwgTHN0KSwKICAgICRLMSA9IEsgLSAxLAogICAgZnUoQ2RyLCBOLCAkSzEsIENkclJleiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiYXo/CiAgICBhcHBlbmQoW0FdLCBDZHJSZXosIFJleikuCnJlbW92ZV9lYWNoX250aChMc3QsIE4sIFJleikgOi0KICAgICROMSA9IE4gLSAxLAogICAgZnUoTHN0LCAkTjEsICROMSwgUmV6KS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKTsK