<%Dewplayer(javascript)%> 肉少なめ | Item - BE@2ch掲示板のBe番号から識別番号を算出する

BE@2ch掲示板のBe番号から識別番号を算出する

Title :
BE@2ch掲示板のBe番号から識別番号を算出する
Posted on :
2008-03-12
Author :
NKJG
Category :
Webメモ
Hatena Star :

本文

メモ。そもそもモノが実験段階にあるネタなので、あまり参考にはならなげ。あと"ソースは2ちゃんねる"。ところでアレはBe番号と呼ぶべきなのかBeIDと呼ぶべきなのか。

Be-2ちゃんねる 人柱募集中。。。Part5の924 (現在はdat落ち) にあった、1つのBe番号から識別番号を算出し、さらに識別番号から存在しうるBe番号を列挙するperlのスクリプトは以下。perlはわからないけど、インデントはしてみた。

#! /usr/bin/perl
 
my $be = shift
  or die "usage: $0 BE_NUMBER\n";
my $x = int($be/10) % 10;
my $y = $be % 10;
die "$0: illegal be-number: $be\n" if $x < 2 || $x > 9 || $y < 2 || $y > 9;
my $k = $x * $y * 3;
my $n = int($be/100) + $x - $y - 5;
die "$0: illegal be-number: $be\n" if $n % $k != 0;
my $id = $n / $k;
my @list = ();
for my $y (2..9) {
  for my $x (2..9) {
    my $be = ($id * 3 * $x * $y - $x + $y + 5) * 100 + $x*10 + $y;
    push(@list, $be);
  }
}
for my $be (sort {$a<=>$b} @list) {
  print "http://be.2ch.net/test/p.php?i=$be\n";
}

bbs2chreaderで使いたいので、javascriptで識別番号を算出するところを書き出してみた。

function(origBe) {
  var be, x, y, k, n;
  if (typeof origBe == 'undefined') {
    throw new Error('missing be-number');
  }
  be = parseInt(origBe, 10);
  if (!be) {
    throw new Error('illegal be-number: ' + origBe.toString());
  }
  x = Math.floor(be / 10) % 10;
  y = be % 10;
  if (x < 2 || x > 9 || y < 2 || y > 9) {
    throw new Error('illegal be-number: ' + origBe.toString());
  }
  k = x * y * 3;
  n = Math.floor(be / 100) + x - y - 5;
  if (n % k) {
    throw new Error('illegal be-number: ' + origBe.toString());
  }
  return n / k;
}