ぱるちのものおき2.0

主にLaTeXや数学のお話をするブログです。

連立方程式プリントメーカー


バイトで生徒を虐めたくなったので, ちょっと連立方程式を自動で生成してくれるプリントを作ってみよう。
目標は,
1.問題を出力しきった後に解答を出力する
2.解けないものは無し。
3.僕は問題数を指定するだけでよい。計算はしない。
4.これまで1回だけPerltexをリンクさせて似たようなことをやろうとしたが,めんどいので無し。

よし,頑張ってみたのでまずは試作2号。(Overleaf)
https://ja.overleaf.com/read/fnqxbjzbfbvy


一応texの入力も。

\documentclass[11pt,uplatex,dvipdfmx,autodetect-engine,twocolumn,fleqn]{jsarticle}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage[margin=15truemm]{geometry}
\usepackage{otf}

\newcommand{\renritumondai}{
\foreach \x in {1,...,80}{
\pgfmathsetseed{\day*\time+\x}% seedをxと時間依存に
\pgfmathrandominteger{\kotaex}{-6}{6}
\pgfmathrandominteger{\kotaey}{-5}{6}
\pgfmathrandominteger{\keisuuichix}{-7}{7}
\pgfmathrandominteger{\keisuuichiy}{-7}{7}
\pgfmathrandominteger{\keisuunix}{-5}{5}
\pgfmathrandominteger{\keisuuniy}{-5}{5}
\newcount\deter
%0は嫌だ
\loop 
\ifnum \keisuuichix=0\pgfmathrandominteger{\keisuuichix}{-5}{5}
\repeat
%
\loop 
\ifnum \keisuuichiy=0\pgfmathrandominteger{\keisuuichiy}{-5}{5}
\repeat
%
\loop 
\ifnum \keisuunix=0\pgfmathrandominteger{\keisuunix}{-5}{5}
\repeat
%
\loop 
\ifnum \keisuuniy=0\pgfmathrandominteger{\keisuuniy}{-5}{5}
\repeat
%
%方程式が不定な場合を除くように作る(ad-bc neq 0)
\pgfmathsetcount{\deter}{
  \keisuuichix*\keisuuniy-\keisuuichiy*\keisuunix
}
\loop
\ifnum \deter=0\pgfmathrandominteger{\keisuuniy}{1}{9}
\pgfmathsetcount{\deter}{
  \keisuuichix*\keisuuniy-\keisuuichiy*\keisuunix
}
\repeat
%
\[
(\x)\left\{
\begin{array}{l}
\ifnum\keisuuichix=-1 -\relax\else
  {\ifnum\keisuuichix=1\relax\else
  \keisuuichix
  \fi}
\fi
x{%
\ifnum\keisuuichiy>0+\fi}
\ifnum\keisuuichiy=-1 -\relax\else
  {\ifnum\keisuuichiy=1\relax\else
  \keisuuichiy
  \fi}
\fi
y=\pgfmathparse{div(\keisuuichix*\kotaex+\keisuuichiy*\kotaey,1)}\pgfmathresult \\
\ifnum\keisuunix=-1 -\relax\else
  {\ifnum\keisuunix=1\relax\else
  \keisuunix
  \fi}
\fi
x{\ifnum\keisuuniy>0+\fi}
\ifnum\keisuuniy=-1 -\relax\else
  {\ifnum\keisuuniy=1\relax\else
  \keisuuniy
  \fi}
\fi
y=\pgfmathparse{div(\keisuunix*\kotaex+\keisuuniy*\kotaey,1)}\pgfmathresult 
\end{array}
\right.
\]
\vfill
\ifodd\x\else\newpage \relax\fi 
}}
\newcommand{\renritukotae}{
\foreach \x in {1,...,80}{
\pgfmathsetseed{\day*\time+\x}%\renritumondaiと同じseed
\pgfmathrandominteger{\kotaex}{-6}{6}
\pgfmathrandominteger{\kotaey}{-5}{6}
%
(\x)\quad $x=\kotaex, y=\kotaey$\\
}}

\setlength{\mathindent}{0zw}
\setlength{\columnseprule}{0.4pt}
%\title{連立方程式をランダムに80問}
%\author{ぱるち}

\begin{document}
\section*{連立方程式の計算だよ!!}
\renritumondai
\clearpage
\renritukotae
\end{document}

これだと問題数は80問。自分なりに仕上げてみた。

それと,改良して,解が不定になる連立方程式を避けたよ。ついでに,1分単位でコンパイルの結果が変わるようにもしたよ。

*僕はこれで大満足だ。


(検索ワード:TeXLaTeX連立方程式,ランダム,自動,作成)

大いに参考にさせていただいたサイト

doratex.hatenablog.jp