
Tugas
"Apakah mungkin untuk membalikkan tiga sinyal, jika Anda hanya memiliki dua inverter, dan jumlah elemen yang tidak terbatas" DAN "dan" ATAU "? kami memutuskan di institut dalam satu pasangan. Sekarang keputusannya membingungkan para profesional tingkat lanjut. Mari kita lihat bagaimana komunitas geektimes menanganinya, dan pada saat yang sama mencoba mengembalikan sejarah kemunculannya ...
Seorang guru di institut mengatakan bahwa tugas semacam ini muncul di era komputer tabung. Tetapi kami tidak punya cukup pikiran untuk meminta perincian dari para siswa yang biasa-biasa saja, karena sekarang kami harus mengembalikan sejarah sesuai dengan deskripsi mobil-mobil tua dan berpikir sedikit.
Komputer elektronik pertama dibangun di atas lampu. Jadi yang pertama di USSR (1950) komputer MESM berisi sekitar 6000 lampu, dengan bantuan yang fungsi logis "DAN", "ATAU" dan "BUKAN" dari logika biner diimplementasikan, yang mendasari komputer modern. Implementasi katup klasik pada lampu dapat dilihat pada gambar.

Fungsi logis "DAN" dibangun di atas satu lampu, jumlah input ditentukan oleh jumlah kisi di lampu. Dan untuk penerapan elemen katup 2IL klasik, diperlukan dua lampu. Dan meskipun kemudian disebut compactron muncul, sesuatu yang mirip dengan rakitan beberapa lampu dalam satu bohlam, para insinyur masih harus mengoptimalkan ekspresi logis sehingga fungsi "Dan" akan menang di dalamnya. Lampu mahal, tidak dapat diandalkan (MTBF 750 jam), menghasilkan banyak panas, tetapi yang paling penting mereka besar. Pada tahun 1952, dioda semikonduktor domestik pertama muncul untuk menggantikan lampu berdaya rendah. Penampilan mereka menandai munculnya logika dioda, yang memungkinkan untuk secara signifikan mengurangi ukuran gerbang logika. Implementasi fungsi "AND" dan "OR" pada logika dioda ditunjukkan pada gambar.

Tetapi lampu masih diperlukan untuk mengimplementasikan inverter. Dioda semikonduktor sudah digunakan untuk membangun mesin BESM-2, dan sudah memuat 4000 lampu dan 5000 dioda semikonduktor. Pengurangan ukuran dan konsumsi katup "AND" dan "OR" sangat penting, dan membuatnya perlu untuk mengoptimalkan fungsi logika untuk mengurangi jumlah inverter di sirkuit. Mungkin saat itu para insinyur harus menyelesaikan masalah ini untuk pertama kalinya.
Produksi serial transistor, yang memungkinkan untuk sepenuhnya meninggalkan lampu, dimulai di negara kita pada tahun 1955. Dan pada tahun 1959, komputer tubeless
transistor pertama adalah mesin Setun, meskipun masih memiliki 20 lampu.
Namun, kembali ke tugas kita.
Jika ada yang tahu solusinya, jangan merusak kesenangan bagi mereka yang ingin menyelesaikannya sendiri. Jawaban diterima dalam komentar, isilah dalam bentuk entri dalam C atau Verilog.
Varian {nA, nB, nC} <=! {A, B, C}; tidak diterima, ini adalah tiga inverter.
UPD:
Solusi dari @eatmoreD =! ((A&B) | (B&C) | (A&C))
E =! ((D & (A | B | C)) | (A & B & C))
nA = (D&E) | (D & (B | C)) | (E & B & C)
nB = (D&E) | (D& (A | C)) | (E&A & C)
nC = (D&E) | (D& (A | B)) | (E & A & B)
Visualisasi solusi oleh @AndreyDmitriev