LoginSignup
0
1

「2.7,-7/3,-3,√6 の中で,絶対値が最も大きい数を選びなさい。」を wolframalphaとsympyでやってみたい。

Last updated at Posted at 2023-06-15

令和4年青森県高校入試問題【1】(3)

パイソニスタの方へ

リスト内包表記? もっと短くなる方法をアドバイスいただけると幸いです。
数直線上で表してみたい。
以下「私の勉強中」ばかりで申し訳ありません。

問題

ページ後半で改題も考えました。
共通テスト2023数学ⅠA【1】[1]絶対値」対策になるとうれしいです。

2.7, -7/3, -3, √6 の中で,絶対値が最も大きい数を選びなさい。

公式ホームページ

【1】(3)

数学苦手な中学生応援します 様の問題と解答

(青森県を参照)
問題
http://homepage1.canvas.ne.jp/ynaka/R4/0402.html
解答
http://homepage1.canvas.ne.jp/ynaka/R4/04an1.html

>数学苦手な中学生応援します 様 ポータル

wolframalphaで

「小数と分数と負の数と平方根」と「絶対値」と組み合わせて、大小関係
/@ が、wolframalphaで使えるとは思いませんでした。

結果 {2.7, 7/3, 3, sqrt(6)}

結果3

Odering<Mathematica

勉強中
https://reference.wolfram.com/language/ref/Ordering.html.ja?source=footer

sympyで

勉強中

改題

2.7, -7/3, -3, √6 を、絶対値が小さい順に並べなさい。

wolframalphaで

勉強中

sympyで

bisectで実行しました。
-7/3, √6 を表示したい。(2023/06/16)

from sympy import *
from bisect import *
from operator import itemgetter

class mySortedCollection(object):

    def __init__(self, iterable=(), key=None):
        self._given_key = key
        key = (lambda x: x) if key is None else key
        decorated = sorted((key(item), item) for item in iterable)
        self._keys = [k for k, item in decorated]
        self._items = [item for k, item in decorated]
        self._key = key

    def __getitem__(self, i):
        return self._items[i]

    def insert(self, item):
        'Insert a new item.  If equal keys are found, add to the left'
        k = self._key(item)
        i = bisect_left(self._keys, k)
        self._keys.insert(i, k)
        self._items.insert(i, item)
#########################################################################
s = mySortedCollection(key=itemgetter(1))
myInput=['2.7','-7/3','-3','√6']
s = mySortedCollection(key=itemgetter(1))
for record in [
                (myInput[0], abs(2.7)    ),
                (myInput[1], abs(-7/3)   ),
                (myInput[2], abs(-3)     ),
                (myInput[3], abs(sqrt(6)))]:
               s.insert(record)
print("#",','.join(   myInput                    ) )
print("#",    2.7,abs(-7/3),abs(-3),float(sqrt(6)) )                                    
print("#",','.join(  [r[0] for r in list(s)]     ) )
# 2.7,-7/3,-3,√6
# 2.7 2.3333333333333335 3 2.449489742783178
# -7/3,√6,2.7,-3

実行方法
①私の環境は,pycharmです。
②よく聞くのは、Jupyterです。
③web上で、上記のソースを「SymPy Live shell」に、コピー貼り付けでもできました。
黒背景の右上に、マウスを移動すると、コピーマークが発生します。
??? タブレット環境で、コピー貼り付けが実行できませんでした。???

通信環境によっては、実行時間1分以上かかります。

参考

各要素の2番目の部分を比較してソートする:

/@

bisect

おすすめ

>(参考)Wolfram│Alpha 開発物語

0
1
2

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
0
1