LoginSignup
4
0

More than 5 years have passed since last update.

シクシク素数アドベントカレンダー whitespace(?) 編

Last updated at Posted at 2018-12-12

はじめに

この記事は,「シクシク素数アドベントカレンダー Advent Calendar 2018」の 13 日目です.
https://qiita.com/advent-calendar/2018/4949prime-series

シクシク素数・問題文はアドベントカレンダーを参照してください.

ソースコード

Ideone
https://ideone.com/vVEFoR

命令セット風に可視化したコード
https://gist.github.com/buyoh/b2b50884e2defe829b4805d8c6d3aa3a

こちらにも載せます.Sがスペース,Tがタブ,Lが改行(LF)です.

SSSTSLSSSTSSSLTTSSSSTTLSSSTSSSLTTSLSLSLLSSSTSLLTSSTTLSLTLSSSTTLSLLLTLLSSSTSSLLTT
STSTLSLTLSSSTSTLSLLLTLLSSSTTSLLTSSTTTLSLSLTSSTTTLSLLSSSTLLTLLSSSTTTLSLLSSSLLTLLS
SSTSSSLLTSSTSSTLSLLSSSTLLTLLSSSTSSTLLTSSTSTSLSSSTLLTLLSSSTSTSLSSSLLTLLSSSLLSLSTS
SSTLLSSSTSSSSLSSSTSLTTTSSSTTLTTTSLSSSSTSLSLTTTSSSSTLTSSSSSSTTLSLTTTSSSSTSSLSLTTT
SSSSTSTLSSSLSSSTSLTTTTSSSTTSSSSTSTLTTTSLTTTSSSSTSSLTTTLSSSTSSTSLSSSTLSSSLSSSLSSS
TSLTTTTSSSTTTSSSLTSSTLSTSTSLLTSSTSSTTLSSSLSLTSSSTSLTTTSSSTTLSLTTTSSSSTSLSLTTTSLT
LLSSSTSSTTLLSSSTSTSSLSSSTLSSSLSSSLSSSTSLTTTTSSSTTTSSSTSTSLTSTTSSSTSSLTSSTLSTSTSL
SSSTLSSSLSSSLSSSTSLTTTTSSSTTTSSSTSTSLTSTTSSSTSSTLTSSTLSTSTSLLSTSTSSSLLTSSTSTSTLS
SSTLSLTSSSTSLTTTSSSTTLSLTTTSSSSTSLSLTTTSLTLLSSSTSTSTLSSSLSSSTSLTTTTSSSTTTSSSTSTS
LTSTSLSTSTSSSSLSLTSSSTSLTTTSSSTTLSLTTTSSSSTSLSLTTTSLTLSSSTSLTTTSSSTTLSLTTTSSSSTS
LSLTTTSSSSLLTLLSSSTSSSTLLSLSTSTTTLLSSSTSTTSLSSSTSLTTTSSSTTLTTTSLSSSSTSLSLTTTSSSS
TSLTSSSSSSTTLSLTTTSSSSTSSLSLTTTSSSSTSTLSSSLSSSTSLTTTTSSSTTSSSSTSTLTTTSLTTTSSSSTS
SLTTTLSSSTTSSSLSSSTLSSSLSSSLSSSTSLTTTTSSSTTTSSSTSLTSSTLSTSTSLLTSSTTSSTLSSSTLSLTS
SSTSLTTTSSSTTLSLTTTSSSSTSLSLTTTSLTLLSSSTTSSTLLSSSTTSTSLSSSTLSSSLSSSLSSSTSLTTTTSS
STTTSSSTSLTSTTSSSLTSSTLSTSTSLLTSSTTSTTLSSSLSLTSSSTSLTTTSSSTTLSLTTTSSSSTSLSLTTTSL
TLLSSSTTSTTLSSSTLSSSTSLTTTTSSSSSSLTSSSSSSTTLTTSLSSSTTTSSLSSSLSSSTLSSSTLSSSTSLTTT
TSSSTTTSSSTLSSSTSLTTTTSSSTTTTSSLSSSLSSSTSLTTTTSSSTTTSLTTSSTLSTSTSSLLTSSTTTSTLLSS
STTTTSLSSSTLSSSLSSSLSSSTSLTTTTSSSTTTSSSTLSSSTSLTTTTSSSTTTTSTTSSSLTSSTLSTSTSLLTSS
TTTTTLSSSLSLTSSSTSLTTTSSSTTLSLTTTSSSSTSLSLTTTSLTLLSSSTTTTTLSSSTLSSSTSLTTTTSSSSLS
SLSTTTSSSTSLTSSSTTSTTTSLLLSLSTTTSSLLSSSTTTSTLSSSTLSLTSSSTSLTTTSSSTTLSLTTTSSSSTSL
SLTTTSLTLSSSTSLTTTSSSTTLSLTTTSSSSTSLSLTTTSSSSLLTLLSSSTSTTTLLSLSTSSSSTLLSSSTSSSSS
LSSSTSLTTTSSSTTLTTTSLSSSSTSLSLTTTSSSSTSTTTLTSSSSSSTTLSLTTTSSSSTSSLSLTTTSSSSTSTLS
SSLSSSTSLTTTTSSSTTSSSSTSTLTTTSLTTTSSSSTSSLTTTSSSTSTSTLSSSTSLTTTTSSSSSSLTSSSSSTTL
TTSSSSTSTTSLSSSTSLTTTTSSSSSSLTSSSSSSTTSSSSLTTSLSSSTSSSTSLSSSTLSSSLSSSLSSSTSLTTTT
SSSTTTSSSLSLTTSSTLSTSTSSLLTSSTSSSTTLSSSTLSSSTSLTTTTSSSSSSTSTSTLSSSTSLTTTTSSSSLSS
LSTTTSSSTLTSSSTTSTTTTSSSSLSSSSLSSSTSLTTTTSSSTTTSSSTSTSLTSTTTTSTTTSLLSSSLSSSTSLTT
TTSSSSLSSLSTTTSSSTSTSLTSTSTTSTTTSLLLSLSTSSSTSLLSSSTSSSTTLLSSSTSSTSSLSSSLSSSTLSSS
TSTSTLSSSTSLTTTTSSSTTTSSSLTSSTLSTSTSSLLTSSTSSTSTLSSSTSTTSLSSSTSLTTTTSSSTTTSSSTLS
SSTSLTTTTSSSSSSTSTSTLSSSTSLTTTTSSSTTTTSSSTTTTSSSSLSTLSSSLLSSSTSTSTLSSSTSLTTTTSSS
SLSSLSTTTSSSTLTSSTTTSTTTSLLLSLSTSSTSSLLSSSTSSTSTLSSSTSLTTTSSSTTLSLTTTSSSSTSLSLTT
TSSSSLLTLLSSSTSSSSTLLSLSTSSTTTLLSSSTSSTTSLSSSTSLTTTSSSTTLTTTSLSSSSTSLSLTTTSSSSTS
LTSSSSSSTTLSLTTTSSSSTSSLSLTTTSSSSTSTLSSSTLSSSTSLTTTTSSSTTSSSSTSTLTTTSLTTTSSSSTST
LTTTSSTTLTSSSSLTTTSSSSTSSLTTTSSSLSSSTSLTTTTSSSTTTTTTLSTSTSSSSSLSLLSSSLSSSTSLTTTT
SSSSLSSLSTTTSSSTLTSSSTTSTTTSLLLSSSTSTSSSLSSSTLSSSLSSSLSSSTSLTTTTSSSTTTSSSTLSSSTS
LTTTTSSSTTTTSSTLSTSTSSLLTSSTSTSSTLSSSTSTTSSLSLSTLSSSLLSSSLSSSTSLTTTTSSSTTTTTTLST
STSSSSSLSLLSSSLSSSTSLTTTTSSSSLSSLSTTTSSSTLTSSSTTSTTTSLLLSLSTSTSSSLLSSSTSTSSTLSSS
TSLTTTSSSTTLSLTTTSSSSTSLSLTTTSSSSLLTLLSSSTSSTTTLLSLSTSTSTTLLSSSTSTSTSLSSSTSLTTTS
SSTTLTTTSLSSSSTSLSLTTTSSSSTTSSTTTLTSSSSSSTTLSLTTTSSSSTTSSTSTLSSSTSLTTTTSSSSLSSSS
LTSSSSSSTSSTTLTTSSSSTLTSSSSSSLTTSSSSTTSSTSSLSSSTSLTTTTSSSSLSSSSTSSLTLTTSSSTSSLTT
TTTSTTTSLLLSSSTSTTSSLSSSTLSSSLSSSTTSSTTSLSSSTSLTTTTSSSTTTSSSTTSSTSSLSSSTSLTTTTSS
STTTTSSTLSTSTSSLLTSSTSTTSTLLSSSTSTTTSLSSSTTSSTSTLSSSTSLTTTTSSSTTTLSTSTSTTSLSSSTT
SSTSTLSSSTSLTTTTSSSTTTLSTSTSSSSLLSTSTTSLLTSSTSTTTTLSSSLSSSTSLTTTTSSSSSSTTSSTTSLS
SSTSLTTTTSSSTTTTSSSSLSSSSTTSSTSTLSSSTSLTTTTSSSTTTTTSTTTSLLSSSTTSSTTSLSSSTSLTTTTS
SSSLSSLSTTTSSSTLTSSSTTSTTTSLLLSSSTSTTTTLSSSTTSSTSTLSSSTSLTTTTSSSSLSSLSTTTSSSTLTS
SSTTSTTTSLLLSLSTSTTSSLLSSSTSTTSTLSSSLSSSTSLTTTTSSSSSSLSSSTSLTTTTSSSSSSTTSSTSSLSS
STSLTTTTSSSTTTTSSSLSTSTSSTTSLSLLSSSTSTSLSLSTLSSSLLSSSTSLTTTSSSTTLSLTTTSSSSTSLSLT
TTSSSSLLTLLSSSTSTSTTLLSTSTSTSTSLLLL

メモ

whitespaceを直接書いたわけではなく,9月頃に作った,独自言語からwhitespaceに変換するコンパイラを使っています1

下のコードを上のwhitespaceにコンパイルしています.

func: sikusiku(x){
    if (x == 0){
        return: 0;
    }
    if (x%10 == 4 || x%10 == 9){
        return: 1;
    }
    return: sikusiku(x/10);
}

# x >= 2
func: isprime(x){
    if (x == 2){
        return: 1;
    }
    if (x%2 == 0){
        return: 0;
    }
    let: d(3);
    while (d*d <= x){
        if (x%d == 0){
            return: 0;
        }
        d += 2;
    }
    return: 1;
}

# x > 0
func: print_number(x){
    let: stack[20], i(-1);
    let: zero('0');
    while (x > 0){
        stack[i += 1] = x%10;
        x /= 10;
    }
    while (i >= 0){
        __putc(zero + stack[i]);
        i -= 1;
    }
}

func: print_array(begin, end){
    print_number(*begin);
    begin += 1;
    while (begin < end){
        __putc(',');
        print_number(*begin);
        begin += 1;
    }
}

func: main(){
    let: results[100];
    let: cnt, val(19), i(0);
    cnt = __geti();

    while(i < cnt) {
        if (isprime(val) && sikusiku(val)){
            results[i] = val;
            i += 1;
        }
        val += 1;
    }

    print_array(&results, &results + cnt);
    __putc('\n');
}

  1. ひょっとしたら,この場合はwhitespaceではなく独自言語になるかもしれませんが,独自言語は誰も書かないはずなのでレギュレーションには違反していないはず…. 

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0