解いた問題

5/22/2011

ppr

何やってんだ、オレは。
ネタ言語ぷんぷくりん
たぶん拡張子は.ppr
参考サイト
 http://kirei.biglobe.ne.jp/news/detail/20110426162331_pch19894

Source Code

#include <iostream>
#include <vector>
#include <map>

using namespace std;

int main(void)
{
  map<string, char> token;
  token["ですけどぉぉお〜!"] = '>';
  token["ぷんぷくり〜ん"] = '<';
  token["私かわいそーなコ"] = '+';
  token["わかんなぁぁああい"] = '-';
  token["><"] = '.';
  token["覚えたぞぉ"] = ',';
  token["メモメモ"] = '[';
  token["キュンキュンキュン"] = ']';

  const int M = 30000;
  char mem[ M ];
  char *ptr = mem;
  fill( mem, mem + M, 0 );

  vector<string> v;
  for(string s; cin >> s; v.push_back(s));

  for(int i=0; i<v.size(); ++i){    
    if( token[ v[i] ] == '>' ) ptr++;
    else if( token[ v[i] ] == '<' ) ptr--;
    else if( token[ v[i] ] == '+' ) (*ptr)++;
    else if( token[ v[i] ] == '-' ) (*ptr)--;
    else if( token[ v[i] ] == '.' ) cout << *ptr;
    else if( token[ v[i] ] == ',' ) *ptr = cin.get();
    else if( token[ v[i] ] == '[' ){
      if( !(*ptr) ){
        int o = 0, c = 0;
        while(true){
          if( token[ v[i] ] == '[' )++o;
          if( token[ v[i] ] == ']' )++c;
          ++i;
          if( o == c )break;
        }
      }
    }
    else if( token[ v[i] ] == ']' ){
      if( *ptr ){
        int o = 0, c = 0;
        while(true){
          if( token[ v[i] ] == '[' )++o;
          if( token[ v[i] ] == ']' )++c;
          --i;
          if( o == c )break;
        } 
      }
    }
    else ;
  }
  cout << endl;
  return 0;
}
Input

私かわいそーなコ 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
赤ちゃんかわいそうですぅ 赤ちゃんかわいそうですぅ 赤ちゃんかわいそうですぅ
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
私かわいそーなコ メモメモ ですけどぉぉお〜! 私かわいそーなコ
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ ですけどぉぉお〜!
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
私のハードディスクに記録しているのでありますっ
私のハードディスクに記録しているのでありますっ
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ ですけどぉぉお〜!
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
私かわいそーなコ ぷんぷくり〜ん ぷんぷくり〜ん ぷんぷくり〜ん
わかんなぁぁああい キュンキュンキュン ですけどぉぉお〜! ><
ですけどぉぉお〜! 私かわいそーなコ 私かわいそーなコ ><
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ ><
>< 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
>< ですけどぉぉお〜! わかんなぁぁああい ><
わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい
わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい
ヒヨコが死んじゃうじゃないですかぁっ
わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい
>< ぷんぷくり〜ん 私かわいそーなコ 私かわいそーなコ
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ 私かわいそーなコ
私かわいそーなコ 私かわいそーなコ >< わかんなぁぁああい
わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい
わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい ><
私かわいそーなコ 私かわいそーなコ 私かわいそーなコ ><
わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい
わかんなぁぁああい わかんなぁぁああい >< わかんなぁぁああい
わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい
わかんなぁぁああい わかんなぁぁああい わかんなぁぁああい ><
ですけどぉぉお〜! 私かわいそーなコ ><



Output

Hello, world!


おまけ
 #include <iostream>

using namespace std;

int main(void)
{
  int cnt = 0;
  for(char c; cin >> c; ){
    if( c == '>' )cout << "ですけどぉぉお〜!" << ' ';
    if( c == '<' )cout << "ぷんぷくり〜ん" << ' ';
    if( c == '+' )cout << "私かわいそーなコ" << ' ';
    if( c == '-' )cout << "わかんなぁぁああい" << ' ';
    if( c == '.' )cout << "><" << ' ';
    if( c == ',' )cout << "覚えたぞぉ" << ' ';
    if( c == '[' )cout << "メモメモ" << ' ';
    if( c == ']' )cout << "キュンキュンキュン" << ' ';
    if( ++cnt % 4 == 0 )cout << endl;
  }
  cout << endl;
  return 0;
}

0 件のコメント :

コメントを投稿