2022年1月5日水曜日

お年賀 2022年

さて、久しぶりにHP Primeのシミュレータで動くプログラムを作業してみました。
少々どころか、かなり長いコードなので、HP Prime実機のキーをポツポツ叩いて打ち込むのは苦行です。
PCとかを経由して、手軽に実機へコードを送り込む方法とかあるのかな ?
当方、未だに実機を入手しておらんので、この辺りの事情を御存知の方は、お知らせ戴けると幸甚であります。

実をいいますと、HP Primeでpythonが動く、と書いた手前、pythonで動くプログラムをでっち上げようと思ったのですが、global 文が機能しない様な感触だった (古いシミュレータだから ?)ので、今回はPPLで書き下した次第。

追記 on 2022-03-11

別の所に、画像を変更したPPLコードを掲載しました。
https://hpcalc-fun.blogspot.com/2022/03/2022.html


// title : graphic example
// begin : 2022-01-04 04:10:54 

//
EXPORT colour;

//  graphics print func
gprint(I, J, str) 
BEGIN
LOCAL c;
  D := 4;

  FOR X FROM 1 TO DIM(str) DO
      c := MID(str, X, 1) ;
      N := INSTRING("0123456789ABCDEF", c) ;
      L := colour(N) ;
      RECT_P(I, J, I+D, J+D, L) ;
      I := I+D ;
  END;
END;

//  
EXPORT main()
BEGIN

RECT();

//  palette
colour := {} ;
colour := CONCAT(colour, RGB (32, 30, 22) );
colour := CONCAT(colour, RGB (93, 94, 86) );
colour := CONCAT(colour, RGB (51, 69, 71) );
colour := CONCAT(colour, RGB (77, 52, 30) );
colour := CONCAT(colour, RGB (111, 146, 156) );
colour := CONCAT(colour, RGB (94, 121, 131) );
colour := CONCAT(colour, RGB (173, 199, 205) );
colour := CONCAT(colour, RGB (228, 229, 222) );
colour := CONCAT(colour, RGB (163, 160, 155) );
colour := CONCAT(colour, RGB (172, 138, 110) );
colour := CONCAT(colour, RGB (153, 113, 87) );
colour := CONCAT(colour, RGB (210, 173, 158) );
colour := CONCAT(colour, RGB (200, 150, 119) );
colour := CONCAT(colour, RGB (223, 201, 180) );
colour := CONCAT(colour, RGB (98, 76, 50) );
colour := CONCAT(colour, RGB (144, 93, 56) );

// ======== graphic print

gprint(  0 ,  0 ,  "000000012324445205444467526677846777425466444541122200214444467776645000445"  ) ;
gprint(  0 ,  4 ,  "000000084114445505644467226777846666405666444555122000214114667776445002465"  ) ;
gprint(  0 ,  8 ,  "00000091A845444504444466524777446667405467454555122000214444777677445002445"  ) ;
gprint(  0 ,  12 ,  "000000432664466525645466554777446676404476456444112202111118667776442002445"  ) ;
gprint(  0 ,  16 ,  "00000012046676640544446752667784666760546664688B88BC88DB6954777776442002645"  ) ;
gprint(  0 ,  20 ,  "00100012246677640564446742477744666762546768D6DB8BBBBCBDDDB8667777642002645"  ) ;
gprint(  0 ,  24 ,  "0022011221666774254444664247776566666546D698DBD77DDD77DD8D78886777645002445"  ) ;
gprint(  0 ,  28 ,  "00200522224677642444446742477764667767777BEE8BB77D777777DBB7644666445002465"  ) ;
gprint(  0 ,  32 ,  "2332252322567764054444674267776467777777745399D777D777777DB8D68488641202645"  ) ;
gprint(  0 ,  36 ,  "3E2025002E5467742244446742467784677777771B828BD7D77D7777DDD8968886684002442"  ) ;
gprint(  0 ,  40 ,  "2E30220302114774226444676267776BBD77777B8123BDB67D7777777DD8589487766502645"  ) ;
gprint(  0 ,  44 ,  "322312020222477425444466424777BBBDD7777B8308BBD7DDDD7777DDC9911EAD777B55445"  ) ;
gprint(  0 ,  48 ,  "323212030112567422444466424777BBD77777D89EA8BDDBDDDDD7D7DB9891AA99B77768645"  ) ;
gprint(  0 ,  52 ,  "2302100222242674225555468256DBBB77777777B86BBBBDDD6BDDDDB8888596D899D776645"  ) ;
gprint(  0 ,  56 ,  "3222100202565464224444666058B7BBBD777777DBDBDBBDBBBBBBBB8888888D77D89877645"  ) ;
gprint(  0 ,  60 ,  "E32110020E264266224554676286BBBBDBD77BDD8BBD6BD6DBB88BB88CAA888D777D8967745"  ) ;
gprint(  0 ,  64 ,  "E222E0020E16826622445546B4BA8BBBBB9BBCB98BBBBBBBBB8B8B989BA195BD7777789D7D6"  ) ;
gprint(  0 ,  68 ,  "3222200E0228656620445466BBAABBBBBBA9AA89BBBB6BBBD88BBBB989AA9AB7DD777DB8777"  ) ;
gprint(  0 ,  72 ,  "202010020114744422445866B9ACBBBBBCAAB8B89BBBBBA8BBBBB8BCC9AA9ABDDDD7777B877"  ) ;
gprint(  0 ,  76 ,  "E22210020218764422444888BCACBBBBBCABBBB8B595BB9188BBBB888A19A8BB98DD7777B8D"  ) ;
gprint(  0 ,  80 ,  "E20212020E28765422444DBBBBAABBBDBBBBDBBBCA851BBAA8B8BB8C9AA9A8BAA9DDD7777DD"  ) ;
gprint(  0 ,  84 ,  "2022E0000228774550448DBBBBAABBBBBBBBBBBB91B82ABB1BB8BC9C9A99199AF989D77777D"  ) ;
gprint(  0 ,  88 ,  "22321002211477655245BDDBBBCCABBBBBBBBBBBB14129B8F98B8B989A9F9AAAE999DDDDD77"  ) ;
gprint(  0 ,  92 ,  "222220020114676450448DDBBBCCCABDBBBBBBBB812238BBAA8B99CA999E91A1FA99B9DD677"  ) ;
gprint(  0 ,  96 ,  "222EE00301247774525486DBDBBCCABBDDDBDBBBB5103BBBAAB8999CA1AAEEA11AA9C9CD8DD"  ) ;
gprint(  0 ,  100 ,  "323222002229777652445DDBBBBBCBBBDBBDBDBBBA1E1B8BAA9CC999A9AAEEAE1AA9A988DDD"  ) ;
gprint(  0 ,  104 ,  "212220020E156776554448BBBBDDBDDDDDBBBBBBB95AABBB998C999119A1EF1E1FA9F9988DB"  ) ;
gprint(  0 ,  108 ,  "1112200522E577774446488DDDDBBDBBBBDBBBBBBCB9BCCC9C9999AEF91EE11E11AAE999CC9"  ) ;
gprint(  0 ,  112 ,  "21125200022167674445466BBDDBDDDBBBBBBBBBCCCCBBB89CC99AEE19E0E1E1EFAE1A998B8"  ) ;
gprint(  0 ,  116 ,  "151E12000144666654812246BDBDDBDBBBBBBBBCBCC8CCC998CAAFEEAAE3EEE11FE21A599CC"  ) ;
gprint(  0 ,  120 ,  "151222000224666686DD7641CDBDDDBDBBBCCBCCB99CCB8C8CAAEE3191321EE1FEEEFAA998C"  ) ;
gprint(  0 ,  124 ,  "1122E200000224686DD77777ABBBDBBBBBBBCCCC99C89C9CCAFEEE319E33E1FE1E2E11AA9C8"  ) ;
gprint(  0 ,  128 ,  "21E2E2000112039DDDD7777DCCCDBBDBBBC8CC9C99C9C8CC9F133E3AA332EEE1EEEEEEAAA99"  ) ;
gprint(  0 ,  132 ,  "212222200111199CDD77D77DCCBBBDDBBBBCC9C99C9C9CBAA133E3EA323EEEEEEEE1EF1A199"  ) ;
gprint(  0 ,  136 ,  "E22E2E200221999B7D7D77DCBCCDBBBBBB9999AA9AA999A1E33333AF0333EEE1EEE1EFAA199"  ) ;
gprint(  0 ,  140 ,  "11223200022289CD77DD77CCCCCDBBBCCCC9999C9999A12E33003FA003E22E1EEE1E211AF99"  ) ;
gprint(  0 ,  144 ,  "222322200221CCDDDDDDDDDCCCCBBBDBB99A98C9A9AEE3030300FA0033E23E1EEE1E2F1F199"  ) ;
gprint(  0 ,  148 ,  "32020230022ACDDDCCBBCCCACCCCCDBCCCAAAA9AAA1EF3300303F30330333113EEE3E11A19A"  ) ;
gprint(  0 ,  152 ,  "022002000EABDDD9FCCACFFFCCBCBCCCCAAAF1A58AAAA133303F300330322EE3EEE22EA1F9A"  ) ;
gprint(  0 ,  156 ,  "302000001B7DDDCCCCAC9FFFFCCCCCCAAAAFAF1ABAB33A1103E300303203E1332EE2E1AE19A"  ) ;
gprint(  0 ,  160 ,  "00000018DDDDDDC9CFFFFFEEF33EF3FFFFEFEEEEA3193FB9F330033003333303EEE23EF1FA1"  ) ;
gprint(  0 ,  164 ,  "00001BDDDDDC9CA9FFFFEEE3333333EE1FA1FFAFA1F13EFA3333333303030003E1E0EEA119A"  ) ;
gprint(  0 ,  168 ,  "0E9DDD7DBCFCA9FFFFEF333FE33FF9AFAFE33333EF1E1E33E333303003030003EA10EE1EA9A"  ) ;
gprint(  0 ,  172 ,  "8DD7DDCCFCFAFFFFFEE33FF33FAA9FFF3303330300003F11EE33300000000003FAE03EEAF9A"  ) ;
gprint(  0 ,  176 ,  "DDCCCFCFACFFFEEFFEFFFFFFCCFFFFE303FCFFE3000000003000000000000000AAE2EE1F19F"  ) ;
gprint(  0 ,  180 ,  "CFCCAACAAFFFFFFF3FFA9CCFA33F9F33F9CAAFF3300000000000000000000000FA122EF1F9A"  ) ;
gprint(  0 ,  184 ,  "FCFFCFFFFEFFFFFFACAAFFFAF3FCA33ACCAAAFFF330000000000000000000000E99E2EF119A"  ) ;
gprint(  0 ,  188 ,  "FFCFFFFFEFFFAFCCFFFEFCCA3FCCF3ACCAACAAFFF33000000000000000000000E98EEE11AAA"  ) ;
gprint(  0 ,  192 ,  "CCFFFEF3FFFFCCFFFFACCCAFFCCF3ACC9CCAAC9BAFF300000000000000000000EFCAF3A3F9A"  ) ;
gprint(  0 ,  196 ,  "FFFFFFFFFFCCFFFFACCCCCF3FC9FFCBCCCCBBDD77DBA30000000000000000000EFC9EEFEA99"  ) ;

//  show screen and wait
FREEZE;

END;


2 件のコメント:

hangyodon さんのコメント...

ども、あけおめです。

akatuki様のお年玉プログラムを実機で動かしました。
https://twitter.com/hangyodon1123/status/1478977470233968642?s=21

手順は、写真のみでツイッターに上げました。
ツイッターにも注意を書きましたが、プログラムをコピペした際に、
最後にゴミが付く場合があります。
私もエラーの原因がわからず、プログラムをダラダラ見ていたら
最後に意味不明な文字列が付いており、取り除くと無事に動作
しました。

確かにエラーが、構文エラーと表示されますがどの場所かの
指示があれば簡単に解決できたのに、、、
もしかして、エラー場所を探す方法がありますか?

今年こそは、akatuki様が実機を入手し、国内の高機能電卓ファンを
楽しませるワザの伝授を期待しております。

ではでは。

akatuki さんのコメント...

hangyodon 様、謹賀新年であります。

> https://twitter.com/hangyodon1123/status/1478977470233968642?s=21
> 手順は、写真のみでツイッターに上げました。

これは痛み入ります。
やはりConnective Kitを使うのね。考えちゃうよなぁ。
もっと簡単にポートできればいいんだけどねぇ ... 。

> ツイッターにも注意を書きましたが、プログラムをコピペした際に、
> 最後にゴミが付く場合があります。
> 私もエラーの原因がわからず、プログラムをダラダラ見ていたら
> 最後に意味不明な文字列が付いており、取り除くと無事に動作
> しました。

HP Prime、エラーレポートが貧弱ではあります。
言語仕様が多機能化しているのに、エラーレポートには手が回っていないかの様な ?
ハンディ機なので、致し方ない ?

> 確かにエラーが、構文エラーと表示されますがどの場所かの
> 指示があれば簡単に解決できたのに、、、
> もしかして、エラー場所を探す方法がありますか?

シミュレータでは、構文チェックを実行してエラーが検出されると、その場所へカーソルが移動する様ですが、人間の考えと電卓の考え、違う場合がありますネ。
また、PPL と XCAS python, 記述も違っていたりなど、混乱する要素がてんこ盛りであります。久しぶりにPPLのコードをいじり始めたら、そういや行末にセミコロンが要るの、すっかり忘れておりましたヨ。

> 今年こそは ... 実機を入手し、

HP Prime、値段上がっちゃっておりますネ。ウーン。色々とpython電卓があり、目移りしちゃうよ。

拙いコードばかりで申し訳ない。
実行画像を出されてしまったので、いずれpython版を、と考えはするものの、手が回りそうもありません。
やっている事は単純なので、移植してみたら面白いと思いますヨ。