2013年12月24日火曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の12章(各種ツール)、12.7(練習問題)、12-20.をDartで解いてみる。

その他参考書籍

12.7(練習問題)、12-20.

コード

sample.dart

import 'dart:html';

void main() {
  InputElement run = querySelector('#run_dart');
  InputElement clear = querySelector('#clear');
  Element pre = querySelector('#pre0');
  run.onClick.listen((MouseEvent event){
    pre.text = '${window.navigator.userAgent}\n';
    pre.text += testCases.map(
        (var s) =>
            findButNotAfter(s[0], s[1], s[2]) == s[3]).toString();
  });
  clear.onClick.listen((MouseEvent event) => pre.text = '');
}

int findButNotAfter(String source, String prefix, String pattern){
  if(pattern == '' || prefix == ''){
    return null;
  }
  int start = 0;
  int result = source.indexOf(pattern);
  while(result != -1){
    if(source.substring(result - prefix.length, result) != prefix){
      break;
    }
    start = result + 1;
    result = source.indexOf(pattern, start);
  }
  if(result == -1){
    return null;
  }
  return result;
}

var testCases = [['', '', '', null],
                 ['', '', 'a', null],
                 ['', 'a', '', null],
                 ['a', '', '', null],
                 ['', 'a', 'b', null],
                 ['a', '', 'b', null],
                 ['a', 'a', '', null],
                 ['abcd', 'a', 'bc', null],
                 ['abcdcd', 'ab', 'cd', 4],
                 ['abxcdcd', 'ab', 'cd', 3]];















						

0 コメント:

コメントを投稿