JAxH วิธีที่ทำให้สับสน, ไม่ใช่ข้อความ [ปิด]


12

JAPH เป็นประเพณีที่ยิ่งใหญ่ของการสร้างโปรแกรมที่พิมพ์ "Just another Perl hacker" เรามีคำถามเกี่ยวกับJAPHในไซต์นี้แล้ว แต่พวกเขาดูเหมือนจะกังวลเกี่ยวกับการซ่อนข้อความมากขึ้น แต่ JAPH มักจะเพิ่มเติมเกี่ยวกับการซ่อนวิธีการที่ทำในสิ่งที่ทำ ดังนั้นฉันขอท้าให้คุณอวดคุณสมบัติเจ๋ง ๆ ของภาษาที่คุณชื่นชอบและไม่ต้องกังวลกับการซ่อนข้อความมากเกินไป (เว้นแต่คุณต้องการ)

นี่คือของฉันใน Perl ซึ่งไม่ควรยากสำหรับนักศาสนวิทยาที่มีประสบการณ์ที่จะเข้าใจ แต่อาจน่าสนใจสำหรับผู้อื่น

(*STORE,*TIESCALAR)=map{eval"sub{$_}"}qw'map{print&&sleep$|}split//,pop bless\$|++';tie$t,main;$t="Just another Perl hacker,\n"

ตัดสินโดยการโหวตจากพวกคุณลองดูความคิดที่น่ากลัว!


บางทีคุณควรอัปเดตบทความ Wikipedia บน JAPH เพราะตัวอย่างส่วนใหญ่ดูเหมือนจะซ่อนข้อความ
Peter Taylor

@ PeterTaylor ตกลงมีมากมายที่พยายามซ่อนข้อความและสิ่งเหล่านั้นไม่ผิด แต่ฉันต้องการคนที่สำรวจวิธี ดูตัวอย่างมากมายที่โพสต์ในcpan.org/misc/japh
Joel Berger

1
"ไม่ควรยากสำหรับนักศาสนวิทยาที่มีประสบการณ์ที่จะเข้าใจ แต่อาจน่าสนใจสำหรับคนอื่น ๆ " ที่เป็นจริงของโปรแกรม Perl ใด ๆ ฉันไม่ได้อยู่ในหมวดหมู่ velociraptor ดังนั้นฉันจะให้ Hello World ที่ยุ่งเหยิงแก่ฉัน ในรูปแบบของการแก้แค้น_2=($_1/*/*); ${_2[34]} -${_2[34]:5:1}'\110\145\154\154\157\54\40\127\157\162\154\144\41'

คำตอบ:


29

จะต้องรวบรวมเป็น 32 บิต บนเครื่อง 64 บิตใช้gcc -m32หรือเช่น

#include <stdlib.h>

int main() {
    char *c = "echo Just another C hacker";
    int foo=123; //unused                          /* Warning: there's a
    int k=(int)1                                    * (long) system
    //now for the fun part!                         * of chinese boxes
    //behold:                                       * in this code. */
    +0;
    -1;
    ((int(*)(char *))k)(c);
}

คำเตือน: ไม่ใช่ความคิดของฉัน ฉันพบมันเมื่อหลายปีก่อนซ่อนอยู่ในโค้ดบางส่วน อย่างจริงจัง. ดีกว่าฉันลืมรายละเอียดเล็ก ๆ น้อย ๆ แต่แก่นแท้อยู่ที่นั่น

เมื่อคุณเห็นมันคุณจะเห็นก้อนอิฐ


1
อะไรนะ ... คุณช่วยอธิบายได้ว่าทำไมมันถึงได้ผล?
arshajii

1
ฮา! @arshajii มันเป็นควันและกระจกทั้งหมด ฉันไม่ต้องการอธิบายที่นี่ แต่อ่านรหัสให้ละเอียดยิ่งขึ้น
breadbox

6
... มันค่อนข้างน่ากลัว +1
Hasturkun

@Hasturkun ขอบคุณ ฉันพยายามอย่างที่สุด สำหรับช่วงเวลาที่ผมถือว่าการวาง "RM -rf ~" อยู่ที่ไหนสักแห่ง แต่ก็ต้องการได้รับเหี้ยมโหด ;-)
Tobia

2
@bread Ah! /*จะออกความเห็น! facepalm :-P
Doorknob


6

โผ

class Print{
  var PrinT,print,prinT;
  get PRint() => PrinT;
  get pRInt() => 'A$prinT';
  get pRint() => print;
  set pRInt(PrinT){print=PrinT;}
  set prInt(pRInt){prinT='n$pRInt';}
  Print(prinT,PRINT){
    PrinT = prinT;
    prInt = PRINT;
  }
  PRINT(print,PrinT){
    pRint.PRint('$print ${pRint.pRInt} $PRint $PrinT');
  }
  Print.print(print,prinT){
    pRInt = new Print(print,'other');
    PrinT = prinT;
  }
}
main(){
  Print print = new Print.print(print,'Dart');
  print.PRINT('Just','Hacker');
}

แก้ไข: setter ที่น่าเบื่อน้อย getter ที่น่าเบื่อน้อย

ฉันเรียนภาษานี้มาหนึ่งวันแล้วฉันคิดว่าคนอื่นอาจคิดว่านี่เป็นความยุ่งเหยิงของเด็ก ... :(


1
อุปกรณ์ประกอบฉากสำหรับการนำไปใช้ก่อนกำหนดฉันจะงอกฎของฉันและโหวตให้คุณ ให้ดูว่าผู้พิพากษา (ชุมชน) คิดอย่างไร
Joel Berger

ฉันเห็นด้วยกับโจเอล
DocMax

6

PRNG

มันอยู่ใน C แต่จริงๆแล้วมันแสดงให้เห็นว่าคุณสามารถทำสิ่งดีๆได้โดยใช้ PRNG และเอาต์พุตJust another PRNG hacker:

#include <stdio.h>

#define P 0x3A4B5C6D

char s[6];
int j, t;

void r(int d) {
  t = ((P * d + P) << 17) + ((P * d - P) >> 15) + P;
  for (j = 0; j < 5; j++) {
    s[j] = (t % 51) + 67;
    t /= 51;
    if ((s[j] >= 91) && (s[j] <= 96)) s[j] = 32;
  }
  printf("%s", s);
}

int main() {
  r(0x444C725);
  r(0x2D65DD4B);
  r(0x6C5C71A);
  r(0xB2A4BBD);
  r(0x275BD6F);
  return 0;
}

การใช้ PRNG ในตัว (srand, rand) ก็เป็นไปได้เช่นกัน แต่พกพาได้น้อยกว่า


ว้าว. อะไรนะ ... ฉัน ... โอ้มนุษย์
TehShrike

5

int main(int _)
{
    putchar(~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~
    putchar(~-~-~-~-~-~-
    putchar(-~-~-~-~-~-~-~-~
    putchar(-~-~
    putchar(~-~-~-~-~-~-~-
    putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
    putchar(~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
    putchar(~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~
    putchar(~-~-~-
    putchar(~-~-~-~-~-~-~-~-~-~-~-~-
    putchar(-~-~-~-~-~
    putchar(-~
    putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~
    putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
    putchar(~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
    putchar(-~
    putchar(~-~-
    putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
    putchar(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~_
    ))))))))))))))))))))));
}

4

หลาม

credits.__class__(0,'Just another Python hacker')()

สิ่งที่สับสนเกี่ยวกับเรื่องนี้คืออะไร?
FantaC

วิธีการของ couse
etuardu

3

จาวาสคริ

eval('Acy419yt=12-14;'.split('').map(function(x){return String.fromCharCode(
0240-x.charCodeAt(0))}).join(''))[_]((___='splitulengthureverseujoinufilter'
.split('\x75'),function __(_){return _[___[1]]?__(_[___[0][0]+___[___[3]](''
)[___[0]]('')[___[4]](function(_,__){return ~~(__/2)==1})[___[3]]('')+'ce'](
1))+_[0]:_}("Just Another JavaScript Hacker"))[___[0]]('')[___[2]]()[___[3]](''));

ในรหัสของฉันข้อความ JAJSH ถูกเข้ารหัสโดยการย้อนกลับไม่เพียงครั้งเดียว แต่สองครั้ง !! ฮา! คุณหามันเจอไหม


2

Haskell

ผมทำอย่างใดอย่างหนึ่งด้วยความช่วยเหลือบางส่วน

{-# LANGUAGE ForeignFunctionInterface #-}

import Control.Applicative
import Control.Monad
import Foreign
import Foreign.C

foreign import ccall "stdio.h puts"
    puts :: CString -> IO ()

main :: IO ()
main = liftM2 allocaBytes length
       ((<*> puts) . ((>>) .) . flip (flip zipWithM_ [0..] . pokeElemOff))
     $ map (fromIntegral . fromEnum) "Just another Haskell hacker\0"

และเพื่อความสนุกสนาน:

{-# LANGUAGE ForeignFunctionInterface #-}

import Control.Exception
import Control.Monad
import Data.Bits
import Data.Word
import Foreign
import Foreign.C

foreign import ccall "stdlib.h realloc"
    c_realloc :: Ptr a -> CSize -> IO (Ptr a)

foreign import ccall "stdlib.h free"
    c_free :: Ptr a -> IO ()

foreign import ccall "stdio.h puts"
    c_puts :: CString -> IO ()

-- | Write a UTF-8 character into a buffer.
--
-- Return the length of the character in bytes, which will be a number from 1-4.
pokeUtf8 :: Ptr Word8 -> Char -> IO Int
pokeUtf8 ptr char =
    case (fromIntegral . fromEnum) char :: Word32 of
        c | c <= 0x7F -> do
            put ptr c
            return 1
        c | c <= 0x7FF -> do
            put ptr                 (0xC0 .|. c `shiftR` 6)
            put (ptr `plusPtr` 1)   (0x80 .|. c .&. 0x3F)
            return 2
        c | c <= 0xFFFF ->
            if c >= 0xD800 && c <= 0xDFFF
                then replacement
                else do
                    put ptr                 (0xE0 .|. c `shiftR` 12)
                    put (ptr `plusPtr` 1)   (0x80 .|. c `shiftR` 6 .&. 0x3F)
                    put (ptr `plusPtr` 2)   (0x80 .|. c .&. 0x3F)
                    return 3
        c | c <= 0x10FFFF -> do
            put ptr                 (0xF0 .|. c `shiftR` 18)
            put (ptr `plusPtr` 1)   (0x80 .|. c `shiftR` 12 .&. 0x3F)
            put (ptr `plusPtr` 2)   (0x80 .|. c `shiftR` 6 .&. 0x3F)
            put (ptr `plusPtr` 3)   (0x80 .|. c .&. 0x3F)
            return 4
        _ -> replacement
    where
        put p c = poke p (fromIntegral c :: Word8)
        replacement = pokeUtf8 ptr '\xFFFD'

withUtf8 :: String -> (CStringLen -> IO a) -> IO a
withUtf8 string action = expand nullPtr 64 0 string where
    expand buf bufsize pos str = do
        buf' <- c_realloc buf (fromIntegral bufsize)
        when (buf' == nullPtr) $ do
            c_free buf
            ioError $ userError "Out of memory"
        write buf' bufsize pos str

    write buf bufsize pos str
        | bufsize - pos < 4 = expand buf (bufsize * 2) pos str
        | otherwise = do
            case str of
                (c:cs) -> do
                    len <- pokeUtf8 (buf `plusPtr` pos) c
                    write buf bufsize (pos + len) cs
                [] -> do
                    pokeByteOff buf pos (0 :: Word8)
                    finish buf pos

    finish buf len =
        finally (action (buf, len)) (c_free buf)

puts :: String -> IO ()
puts str = withUtf8 str (c_puts . fst)

main :: IO ()
main = puts "\x266B Just another C hacker using Haskell \x266B"

2

JavaScript

ทำงานในคอนโซล

({}+[])[!''+!''+!![]] + (!![]+[])[!''+!''] + (![]+[])[!''+!''+!''] + (!![]+[])[+![]] + ({}+[])[!![]+!''+!''+!''+!''+!''+!''] + (![]+[])[+!![]] + ([][{}]+[])[+!![]] + ({}+[])[+!''] +
(!![]+[])[+![]] + 'h' + (![]+[])[!''+!''+!![]+!![]] + (!![]+[])[+!![]] + ({}+[])[!![]+!![]+!''+!''+!''+!''+!''] + ({}+[])[!![]+!''+!![]] + (![]+[])[!![]+!''+!![]] + 
({}+[])[!![]+!![]+!![]+!![]+!''+!![]+!![]] + 'h' + (![]+[])[+!![]] + ({}+[])[!![]+!![]+!''+!![]+!![]] + 'k' + (![]+[])[!''+!![]+!![]+!''] + (!![]+[])[+!'']

2

Python 2.x (นิพจน์เดียว)

ตอนนี้ในขณะนี้ค่อนข้างง่ายที่จะหา Pythoneers คนอื่น ๆ อาจพบว่ามันน่าสนใจอย่างน้อย หากคุณสงสัยว่าทำไมมีลูกแกะจำนวนมากฉันต้องการมีขีดล่าง แต่ทำซ้ำได้น้อยที่สุด ใครไม่รักขีดล่าง Ideone

(lambda ______________:(lambda ______,_______,________:(lambda _____:(lambda _,___,__,____,_____________:(lambda _________,__________:(lambda ___________,____________:___________(____________,____[_________**(_________+__________)-__________::_________+_________+_________]+_[__________::_________]+__[_________+__________])(____________,______________))((lambda _,__:________(______(_))[__]),(________(__import__(_[_________]+__[_________*_________+__________]+_[_________]))[_[_________:_________+_________]+___[__________/_________]+__[__________]+_____(u'')[__________/_________]+_[_________+__________]])))((_____________(_)+_____________(_))/_____________(_),_____________(_)/_____________(_)))(_____([]),_____({}),_____(None),_____({}.__iter__),lambda _:len(_)))(lambda _:_______(______(_))))((lambda _:_.__class__),(lambda _:_.__name__),(lambda _:_.__dict__)))('Just another Python Hacker\n')

เวอร์ชันที่เยื้องถ้าคุณต้องการ:

(lambda ______________:
    (lambda ______,_______,________:
        (lambda _____:
            (lambda _,___,__,____,_____________:
                (lambda _________,__________:
                    (lambda ___________,____________:
                        ___________(____________,____[_________**(_________+__________)-__________::_________+_________+_________]+_[__________::_________]+__[_________+__________])(____________,______________)) (
                        (lambda _,__:________(______(_))[__]),
                        (________(__import__(_[_________]+__[_________*_________+__________]+_[_________]))[_[_________:_________+_________]+___[__________/_________]+__[__________]+_____(u'')[__________/_________]+_[_________+__________]]))) (
                    (_____________(_)+_____________(_))/_____________(_),
                    _____________(_)/_____________(_))) (
                _____([]),
                _____({}),
                _____(None),
                _____({}.__iter__),
                lambda _:len(_))) (
            lambda _:_______(______(_)))) (
        (lambda _:_.__class__),
        (lambda _:_.__name__),
        (lambda _:_.__dict__)))('Just another Python Hacker\n')

นี่เป็นการกำหนดฟังก์ชั่นและเรียกมันด้วย 'Just another Python Hacker' ตอนนี้มันไม่จำเป็นต้องมีฟังก์ชั่น แต่ฉันคิดว่ามันจะสง่างามกว่า

f = (lambda ______________:(lambda ______,_______,________:(lambda _____:(lambda _,___,__,____,_____________:(lambda _________,__________:(lambda ___________,____________:___________(____________,____[_________**(_________+__________)-__________::_________+_________+_________]+_[__________::_________]+__[_________+__________])(____________,______________))((lambda _,__:________(______(_))[__]),(________(__import__(_[_________]+__[_________*_________+__________]+_[_________]))[_[_________:_________+_________]+___[__________/_________]+__[__________]+_____(u'')[__________/_________]+_[_________+__________]])))((_____________(_)+_____________(_))/_____________(_),_____________(_)/_____________(_)))(_____([]),_____({}),_____(None),_____({}.__iter__),lambda _:len(_)))(lambda _:_______(______(_))))((lambda _:_.__class__),(lambda _:_.__name__),(lambda _:_.__dict__)))
f('Hello.\n')
f('Just another Python Hacker here.\n')

โอ้มันมีขนาด 900 ไบต์ นั่นคือไม่ได้ตั้งใจอย่างสมบูรณ์และน่ากลัว
seequ

และเห็นได้ชัดว่าใช้งานได้กับ Python 2.x เท่านั้น
seequ

2

QBasic

นี่คือการดำเนินการของฉันใน QBasic โปรแกรมจะต้องถูกเรียกว่า "JAQBH.BAS" ในหรือเพื่อให้มันทำงานได้อย่างถูกต้องเนื่องจากมันอ่านซอร์สของมันเองซึ่งเป็นส่วนหนึ่งของโปรแกรม และฉันไม่พบวิธีที่มีเหตุผลในการกำหนดชื่อของสคริปต์ที่กำลังทำงานอยู่

COMMON SHARED JAQBH$
COMMON SHARED F$
IF F$ = "" THEN F$ = "A.BAS"
OPEN F$ FOR OUTPUT AS #1
PRINT #1, JAQBH$
DATA 20,16,28,24,16
DATA "Just Another QBasic Hacker"
OPEN "JAQBH.BAS" FOR INPUT AS #2
FOR i% = 1 TO 5
        READ l%
        y$ = INPUT$(l%, #2)
        PRINT #1, y$
        y$ = INPUT$(2, #2)
NEXT
CLOSE #1
CLOSE #2
F$ = "CON"
READ JAQBH$
CHAIN "A.BAS"

มีวิธีที่ดีในการรวบรวมหรือเรียกใช้ qbasic ภายใต้อูบุนตู? ฉันลองใช้การค้นหาของ Google ติดตั้ง freebasic และให้ข้อผิดพลาดทุกชนิด
Joel Berger

สิ่งนี้อาจใช้งานได้ - repl.it (เอ่อลองแค่นี้แล้วก็ล้มเหลว)
DanBeale

ฉันไม่คิดว่าเวอร์ชันออนไลน์ใด ๆ จะอนุญาตให้เขียนไฟล์ได้
Kibbee

1
บางทีคุณสามารถเรียกใช้งานได้ใน DOSBOX
Kibbee

ฉันทดสอบใน DOSBOX และทำงานได้อย่างสมบูรณ์
mellamokb

1

Haskell

สนุกกับ monad transformers:

import Control.Monad.State
import Control.Monad.Writer

newtype A a = A (Maybe a)
newtype B = B { c :: String }

instance Show a => Show (A a) where
   show (A x) = show x

instance Show B where
   show = c

s = [97, 13, 1, 5, -12, -3, 13, -82, 40, 25, 18,
     -8, -6, 7, 0, -76, 72, -7, 2, 8, -6, 13]

main = print . A . fmap B . execWriterT . flip evalStateT 0 . mapM f $ s
  where f x = modify (+x) >> get >>= tell . return . toEnum


1

ป.ล.

สร้างแบบอักษรที่กำหนดเองซึ่งจะแสดงข้อความ

%!
100 200[>>begin
(Encoding{}FontType 3
 BuildChar{exch begin 10 0 setcharwidth load exec stroke end}
 FontMatrix .1 0 0 .1 0 0 FontBBox 0 0 10 10) 
{token{exch}{exit}ifelse}loop
{4 6}{array astore def}forall
/c{1 string cvs 0 get}4{def}repeat
/J c{7 9 moveto 7 2 lineto 6 4 1 360 190 arcn}
/A c{2 2 moveto 5 8 lineto 8 2 lineto}
/P c{3 2 moveto 3 8 lineto 3 6 2 90 270 arcn}
/s c{5 7 2 0 270 arc 5 3 2 90 180 arcn}
/H c{2 2 moveto 2 8 lineto 8 8 moveto 8 2 lineto 2 4 moveto 8 4 lineto}5{def}repeat
/F currentdict end definefont 20 scalefont setfont
moveto(JAPsH)show

1

ทับทิม

มีสองแนวคิดและจบลงด้วยการรวมเข้าด้วยกัน

def Object.const_missing(const)
  define_method(:method_missing) do |meth,*args|
    "#{meth}"['i'] ? ->a{not$*<<a.pop} :print(meth)
  end[const,$\=' ']
end

Begin

case %w[Just another ruby hacker]
when tick
  puts 'tock'
when tick
  puts 'tock'
when tick
  puts 'tock'
when tick
  puts 'tock'
else
  eval($**$\)
end

1

ทับทิม 1.9

Cheesy ขึ้นอยู่กับการใช้งานสูง แต่ฉันหวังว่าคุณจะพบว่ามันน่ากลัว

class Object
    define_method(:!) do |n=3|
        send(methods.find{|la|la[/[slappy]{#{n}}/]})
    end
end

(!!!:!).!(5) unless respond_to?('Just another ruby hacker,')

แก้ไข: พิสูจน์


1

หลาม

JAPH ของฉันใน Python

class Foo:
    def __init__(s, t='Just another Python hacker'):
        def g():
            return [100,101,102,32,102,
                    40,120,41,58,112,114,
                    105,110,116,32,120],t
        s.g = g()
        class Z():
            def __add__(s,x):return x
        s.z = sum((chr(i)for i in s.g[0]),Z())
    def __call__(s,t):
        return t.join(map(chr,s))
    def __iter__(s):
        return (ord(i) for i in `s`)
    def __repr__(s):
        return s.g[-1]
    def __getitem__(s, x):
        exec s.z
        f(s(x))
Foo()['']

0

JavaScript

eval (atob("ZnVuY3Rpb24gcHJpbnQoKSB7CmZ1bmN0aW9uIHRyKGEsYikgewogICAgcmV0dXJuIGEubWFwKGZ1bmN0aW9uKHgpewogICAgICAgIHJldHVybiB4LnRvU3RyaW5nKGIpOwogICAgfSkuam9pbignICcpOwp9CgoKdmFyIGEgPSJXemt5TmpNNE1Td3lNekl3TURJek1UYzNPU3d4TVRnMU5UTTNMREV3TkRVek1EYzBOelZkIjsKYSA9IGF0b2IoYSk7CmEgPSBKU09OLnBhcnNlKGEpOwphID0gdHIoYSwzNik7CmNvbnNvbGUubG9nKGEpOwp9"));
print();

0

Lua / RProgN

print "Just "           --                         Write Just to the Console--
print "Another "        --                      Write Another to the Console--
print "Lua "            --           Write Lua, definitely NOT  [ 'RProgN' ]--
print "Hacker "         -- Do u really thing u r an hacker like i [ ur NOT ]--

ฉันแน่ใจว่ามีวิธีที่ดีกว่าและน่าหลงใหลในการรวมสองภาษานี้เข้าด้วยกัน การซ่อนความคิดเห็นมีการใช้มากเกินไป

ลอง Lua Out

ลอง RProgN Out


0

ภาษาสคริปต์การทำงานของ Flashpoint

removeAllWeapons player
s = primaryWeapon player
call = "scripting " else "language "

a = [if true, if false]
b = ["s=s+(call select 0)", format["s=s+(call select 1)%1%2=%3", {;}, "call", {nil}]]

a select 0 then b
a select 1 then b

a = a + getPos player + [{Just another} + format ([" %1 %2 "] + ("Operation" ELSE "Flashpoint"))]

"b = format[""%2%1%3."", s, _x, call""""""hacker""""""]" count a

titleText (b else "plain")

exit

บันทึกเป็นofp.sqs(หรือชื่ออื่น ๆ ) [] exec "ofp.sqs"และการโทรที่มี

เอาท์พุท:


0

ผ้าใบ

³{┤:js nte avshce@;utaohrcna akr@})∑╷

... ซึ่งควรใช้งานได้ แต่บนสตริงยังไม่ได้ใช้งาน ไชโยสำหรับโครงการที่ตายแล้ว! เวอร์ชันการทำงานใช้ตรรกะเดียวกัน แต่ค่อนข้างสับสนเล็กน้อย

ลองออนไลน์! (รุ่นทำงาน)


0

Perl บน OSX 10.7+ (ต้องการ Xcode)

#!/usr/bin/perl
use Inline C=>q{int g(){atexit("j\31\350\31\0\0\0Just \
another Perl hacker\n1\300@\220\17\204\n\0\0\0j\1k\4\x\
cd\x80\203\304\20\303^j\1_Z\270\4\0\0\2\17\5\303");}};g
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.