Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $code = $args[0] #quine: <s>g.[<+>[-]j][-]+++++++++++++.q
- if($code -eq $null){break}
- $code = $code.ToCharArray()
- $meptr = 0
- $rwptr = 0
- $exptr = 0
- $exit = $false
- $memarr = @([int]0) * 65536
- $codarr = $code + @([char][int]0) * 66536 + @([char]'q')
- While($exit -eq $false){
- $ccode = $codarr[$exptr]
- switch($ccode){
- '+' {$memarr[$meptr]++;if($memarr[$meptr] -lt 0){$memarr[$meptr] = 0};$exptr++}
- '-' {$memarr[$meptr]--;if($memarr[$meptr] -lt 0){$memarr[$meptr] = 0};$exptr++}
- '>' {$meptr++;if($meptr -lt 0){$meptr=0};$exptr++}
- '<' {$meptr--;if($meptr -lt 0){$meptr=0};$exptr++}
- '[' {
- $cchcode = ''
- $cycptr = $exptr
- $cyclelev = 1
- if($memarr[$meptr] -ne 0){$cyclelev = 0;$cycptr++}
- while ($cyclelev -ne 0){
- $cycptr++
- if($codarr[$cycptr] -eq '['){$cyclelev++}
- if($codarr[$cycptr] -eq ']'){$cyclelev--}
- }
- $exptr = $cycptr
- }
- ']' {
- $cchcode = ''
- $cycptr = $exptr
- $cyclelev = 1
- if($memarr[$meptr] -eq 0){$cyclelev = 0;$cycptr++}
- while ($cyclelev -ne 0){
- $cycptr--
- if($codarr[$cycptr] -eq ']'){$cyclelev++}
- if($codarr[$cycptr] -eq '['){$cyclelev--}
- }
- $exptr = $cycptr
- }
- ',' {$memarr[$meptr] = [int]([Console]::ReadKey()).KeyChar; if($memarr[$meptr] -eq 13){''};$exptr++}
- '.' {[Console]::Write([string][char]$memarr[$meptr]); if($memarr[$meptr] -eq 13){''};$exptr++}
- 's' {$rwptr = $memarr[$meptr];$exptr++}
- 'j' {$exptr = $memarr[$meptr]}
- 'm' {$codarr[$rwptr] = [char]$memarr[$meptr];$exptr++}
- 'g' {$memarr[$meptr] = [int]$codarr[$rwptr];$exptr++}
- 'q' {$exit = $true}
- default {$exptr++}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement