Updated version:
The first version of the code (see below) had one problem: if the box height was too big, then the signs will protrude their corresponding boxes; this can be solved choosing a maximum value for the length of the signs. The following code shows one such possibility; the length is (approximately) the minimum between the height of the box and half its width:
\documentclass{book}
\usepackage[paperheight=30cm,textheight=25cm]{geometry}% just for the example
\usepackage{xstring}
\usepackage[many]{tcolorbox}
\usetikzlibrary{calc}
\definecolor{mp}{RGB}{240,240,240}
% To control the line width for the signs
\def\RuleFactor{0.15}
\newcommand{\bround}{
\draw[rounded corners=15pt,color=mp,line width=1pt,fill=white]
(frame.south west) --
(frame.north west) --
(frame.north east) --
(frame.south east) -- cycle;
}
\newcommand{\sep}{
\draw[color=mp,line width=1pt]
([yshift=10pt]segmentation.south) -- ([yshift=-10pt]segmentation.north);
}
\newcommand{\ds}[1]{
\IfEqCase{#1}{%
{pp}{\dosign{0.25}{plus}\dosign{0.75}{plus}}%
{pm}{\dosign{0.25}{plus}\dosign{0.75}{minus}}%
{pe}{\dosign{0.25}{plus}\dosign{0.75}{equal}}%
{mp}{\dosign{0.25}{minus}\dosign{0.75}{plus}}%
{mm}{\dosign{0.25}{minus}\dosign{0.75}{minus}}%
{me}{\dosign{0.25}{minus}\dosign{0.75}{equal}}%
{ep}{\dosign{0.25}{equal}\dosign{0.75}{plus}}%
{em}{\dosign{0.25}{equal}\dosign{0.75}{minus}}%
{ee}{\dosign{0.25}{equal}\dosign{0.75}{equal}}%
}[\PackageError{ds}{Undefined option to ds: #1}{}]%
}
\newcommand{\dosign}[2]{
\coordinate (xl) at ($ (frame.west)!#1!(frame.east) $ );
\IfEq{#2}{plus}{%
\path[mp,draw]
let \p1 = ( $ ([yshift=-5pt]xl|-frame.north) - ([yshift=5pt]xl|-frame.south) $ ),
\p2 = ( $ ([xshift=10pt]frame.west) - ([xshift=-10pt]segmentation.center) $ )
in
([yshift=-{0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
edge[line width={\RuleFactor*min(veclen(\x1,\y1),veclen(\x2,\y2))}]
([yshift={0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
([xshift=-{0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
edge[line width={\RuleFactor*min(veclen(\x1,\y1),veclen(\x2,\y2))}]
([xshift={0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
;
}{}
\IfEq{#2}{minus}{%
\path[line width=6pt,mp,draw]
let \p1 = ( $ ([yshift=-5pt]xl|-frame.north) - ([yshift=5pt]xl|-frame.south) $ ),
\p2 = ( $ ([xshift=10pt]frame.west) - ([xshift=-10pt]segmentation.center) $ )
in
([xshift=-{0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
edge[line width={\RuleFactor*min(veclen(\x1,\y1),veclen(\x2,\y2))}]
([xshift={0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
;
}{}
\IfEq{#2}{equal}{%
\path[line width=6pt,mp,draw]
let \p1 = ( $ ([yshift=-5pt]xl|-frame.north) - ([yshift=5pt]xl|-frame.south) $ ),
\p2 = ( $ ([xshift=10pt]frame.west) - ([xshift=-10pt]segmentation.center) $ )
in
([xshift=-{0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))},yshift={0.12*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
edge[line width={\RuleFactor*min(veclen(\x1,\y1),veclen(\x2,\y2))}]
([xshift={0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))},yshift={0.12*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
([xshift=-{0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))},yshift=-{0.12*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
edge[line width={\RuleFactor*min(veclen(\x1,\y1),veclen(\x2,\y2))}]
([xshift={0.5*min(veclen(\x1,\y1),veclen(\x2,\y2))},yshift=-{0.12*min(veclen(\x1,\y1),veclen(\x2,\y2))}]xl)
;
}{}
}
\newcommand{\doibs}[3]{\scantokens{%
\begin{tcolorbox}[
colback=white,
arc=10pt,
colframe=black,
freelance,
sidebyside,
sidebyside align=top,
frame code=\bround,
segmentation code=\sep,
interior code=\ds{#3}
]
\raggedright #1 \tcblower \raggedright #2
\end{tcolorbox}}}
\begin{document}
\doibs{A\\A\\A\\A}{B}{pm}
\doibs{A\\A\\A\\A}{B}{me}
\doibs{A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A}{B}{pe}
\doibs{A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A\\A}{B}{ep}
\end{document}

First version:
Here's one possibility (see remarks below):
\documentclass{book}
\usepackage{xstring}
\usepackage[many]{tcolorbox}
\usetikzlibrary{calc}
\definecolor{mp}{RGB}{240,240,240}
\newcommand{\bround}{
\draw[rounded corners=15pt,color=mp,line width=1pt,fill=white]
(frame.south west) --
(frame.north west) --
(frame.north east) --
(frame.south east) -- cycle;
}
\newcommand{\sep}{
\draw[color=mp,line width=1pt]
([yshift=10pt]segmentation.south) -- ([yshift=-10pt]segmentation.north);
}
\newcommand{\ds}[1]{
\IfEqCase{#1}{%
{pp}{\dosign{0.25}{plus}\dosign{0.75}{plus}}%
{pm}{\dosign{0.25}{plus}\dosign{0.75}{minus}}%
{pe}{\dosign{0.25}{plus}\dosign{0.75}{equal}}%
{mp}{\dosign{0.25}{minus}\dosign{0.75}{plus}}%
{mm}{\dosign{0.25}{minus}\dosign{0.75}{minus}}%
{me}{\dosign{0.25}{minus}\dosign{0.75}{equal}}%
{ep}{\dosign{0.25}{equal}\dosign{0.75}{plus}}%
{em}{\dosign{0.25}{equal}\dosign{0.75}{minus}}%
{ee}{\dosign{0.25}{equal}\dosign{0.75}{equal}}%
}[\PackageError{ds}{Undefined option to ds: #1}{}]%
}
\newcommand{\dosign}[2]{aaa
\coordinate (xl) at ($ (frame.west)!#1!(frame.east) $ );
\IfEq{#2}{plus}{%
\path[mp,draw]
let \p1 = ( $ ([yshift=-5pt]xl|-frame.north) - ([yshift=5pt]xl|-frame.south) $ )
in
([yshift=-5pt]xl|-frame.north)
edge[line width={0.12*veclen(\x1,\y1)}]
([yshift=5pt]xl|-frame.south)
([xshift=-{0.5*veclen(\x1,\y1)}]xl)
edge[line width={0.12*veclen(\x1,\y1)}]
([xshift={0.5*veclen(\x1,\y1)}]xl)
;
}{}
\IfEq{#2}{minus}{%
\path[line width=6pt,mp,draw]
let \p1 = ( $ ([yshift=-5pt]xl|-frame.north) - ([yshift=5pt]xl|-frame.south) $ )
in
([xshift=-{0.5*veclen(\x1,\y1)}]xl)
edge[line width={0.12*veclen(\x1,\y1)}]
([xshift={0.5*veclen(\x1,\y1)}]xl)
;
}{}
\IfEq{#2}{equal}{%
\path[line width=6pt,mp,draw]
let \p1 = ( $ ([yshift=-5pt]xl|-frame.north) - ([yshift=5pt]xl|-frame.south) $ )
in
([xshift=-{0.5*veclen(\x1,\y1)},yshift={0.1*veclen(\x1,\y1)}]xl)
edge[line width={0.12*veclen(\x1,\y1)}]
([xshift={0.5*veclen(\x1,\y1)},yshift={0.1*veclen(\x1,\y1)}]xl)
([xshift=-{0.5*veclen(\x1,\y1)},yshift=-{0.1*veclen(\x1,\y1)}]xl)
edge[line width={0.12*veclen(\x1,\y1)}]
([xshift={0.5*veclen(\x1,\y1)},yshift=-{0.1*veclen(\x1,\y1)}]xl)
;
}{}
}
\newcommand{\doibs}[3]{\scantokens{%
\begin{tcolorbox}[
colback=white,
arc=10pt,
colframe=black,
freelance,
sidebyside,
sidebyside align=top,
frame code=\bround,
segmentation code=\sep,
interior code=\ds{#3}
]
\raggedright #1 \tcblower \raggedright #2
\end{tcolorbox}}}
\begin{document}
\doibs{A\\A\\A\\A}{B}{pp}
\doibs{A}{B}{me}
\doibs{A\\A\\A\\A\\A\\A\\A\\A}{B}{pe}
\doibs{A\\A\\A}{B}{ep}
\doibs{A\\A}{B}{ee}
\end{document}

Remarks
The size of the shapes and the line width will adjust automatically depending on the height of the box.
Notice that now \dosign
has just two mandatory arguments (instead of the original nine arguments) and that \doibs
has only three arguments.
The third argument for \doibs
is used to decide which symbols to draw; I implemented nine combinations for "plus" (p
), "minus" (m
) and "equal" (e
). For example using me
in the third argument means draw "minus" sign to the left and "equal" sign to the right; using pm
in the third argument means draw "plus" sign to the left and "minus" sign to the right.