<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://bridgepedia.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lpala</id>
	<title>BridgePedia - Contributi dell&amp;#039;utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://bridgepedia.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lpala"/>
	<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Speciale:Contributi/Lpala"/>
	<updated>2026-11-10T23:54:31Z</updated>
	<subtitle>Contributi dell&amp;#039;utente</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://bridgepedia.it/index.php?title=XYZ&amp;diff=2018</id>
		<title>XYZ</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=XYZ&amp;diff=2018"/>
		<updated>2026-11-10T20:55:50Z</updated>

		<summary type="html">&lt;p&gt;Lpala: XYZ: scenari 5 e 7 shape_constraints e esempio 2P non rialzo coerente&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:XYZ}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=XYZ&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Dopo certe sequenze di apertura e risposta a livello 1 con ridichiarazione dell&#039;apertore, rendere artificiali e forzanti le ridichiarazioni 2{{fiori}} e 2{{quadri}} del rispondente, così da distinguere a basso livello le mani d&#039;invito da quelle più forti. Secondo l&#039;articolo di Danny Kleinman l&#039;ideazione è attribuita a Joe Kivel.&lt;br /&gt;
|trigger=Dieci sequenze senza interventi iniziate da una mano non passata. Quattro &amp;quot;a tre colori&amp;quot; a livello 1: 1{{fiori}}-1{{quadri}};1{{cuori}}, 1{{fiori}}-1{{quadri}};1{{picche}}, 1{{fiori}}-1{{cuori}};1{{picche}}, 1{{quadri}}-1{{cuori}};1{{picche}}. Sei con apertura, risposta e 1SA dell&#039;apertore: 1{{fiori}}-1{{quadri}}, 1{{fiori}}-1{{cuori}}, 1{{fiori}}-1{{picche}}, 1{{quadri}}-1{{cuori}}, 1{{quadri}}-1{{picche}}, 1{{cuori}}-1{{picche}}, tutte seguite da 1SA.&lt;br /&gt;
|risposte=Nelle quattro sequenze a tre colori: 2{{fiori}} del rispondente = &amp;quot;puppet&amp;quot; verso 2{{quadri}}: non mostra quadri, è artificiale e forzante e l&#039;apertore deve dire 2{{quadri}} con qualunque mano (niente super-accettazioni a 3{{quadri}} né preferenze a salto). Il rispondente può passare 2{{quadri}} con mano debole, oppure dichiarare un colore naturale al giro successivo con mano d&#039;invito (se non è a salto è un invito, da spiegare agli avversari). 2{{quadri}} del rispondente = artificiale e forzante a manche, poi si torna al naturale. 2{{cuori}} è naturale e scoraggiante; 2{{picche}} è naturale e scoraggiante solo se è un rialzo, mentre 2{{picche}} non rialzo e le dichiarazioni più alte sono forzanti e da slam. Dopo 1SA dell&#039;apertore (sei sequenze) 2{{fiori}} e 2{{quadri}} funzionano come il New Minor Forcing.&lt;br /&gt;
|note=Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata. Costi indicati dall&#039;autore: si perde la preferenza a 2{{fiori}} dopo 1{{fiori}}-1{{cuori}};1{{picche}}, si creano molte mani orfane, e dopo 1SA si perde il semplice ritiro a 2{{fiori}} (per esempio dopo 1{{fiori}}-1{{picche}};1SA e 1{{quadri}}-1{{picche}};1SA). Il range dell&#039;1SA di ridichiarazione non è indicato nella fonte: negli scenari si usa 12-14 PO come ipotesi di lavoro. Negli scenari l&#039;apertore ha sempre 12-14 PO (con 15-17 bilanciati aprirebbe 1SA, quindi non ha una mano da 1SA) e il rispondente ha mano debole (5-8 PO) oppure 11 o più PO; tutti gli intervalli di punti sono ipotesi nostre (non indicato nella fonte). Varianti sui check-back dopo 1SA citate dalla fonte: Second Round Stayman e Hi-Ro-Jerum. La preferenza dell&#039;autore (non usare check-back) è una sua opinione.&lt;br /&gt;
|tag_cc=response_xyz&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints=1D-1H;1S poi 2C puppet e passo dopo 2D (rispondente debole con 4 cuori e fit a quadri): pairhcp:17-22 opener D:4+ S:4 H:0-3 hcp:12-14; responder H:4+ D:3+ S:0-3 hcp:5-8; opp1 quiet; opp2 quiet // 1D-1H;1S 2C puppet poi invito a manche con colore naturale (11-12 PO): pairhcp:23-26 opener D:4+ S:4 H:0-3 hcp:12-14; responder S:4 H:5 hcp:11-12; opp1 quiet; opp2 quiet // 2D forzante a manche dopo 1C-1D;1H: pairhcp:24-29 opener C:3+ H:4 D:0-3 hcp:12-14; responder D:5+ H:3 hcp:12-15; opp1 quiet; opp2 quiet // 2H naturale scoraggiante dopo 1C-1H;1S: pairhcp:17-22 opener C:4+ S:4 H:0-2 hcp:12-14; responder H:6 S:3 hcp:5-8; opp1 quiet; opp2 quiet // 2S non rialzo forzante da slam dopo 1C-1D;1H: pairhcp:25-30 opener C:4+ H:4 hcp:12-14; responder S:5 D:5 hcp:13-16; opp1 quiet; opp2 quiet // new minor forcing dopo 1C-1S;1SA con 2D (1SA 12-14 ipotesi): pairhcp:24-29 opener shape:balanced S:2-3 hcp:12-14; responder S:5 hcp:12-15; opp1 quiet; opp2 quiet // costo dopo 1D-1S;1SA perso il ritiro a 2C naturale (1SA 12-14 ipotesi): pairhcp:17-22 opener shape:balanced S:0-3 hcp:12-14; responder S:4 C:5+ hcp:5-8; opp1 quiet; opp2 quiet // quadri lunghe e 2D artificiale forzante dopo 1C-1D;1S: pairhcp:25-31 opener C:3+ S:4 hcp:12-14; responder D:6+ S:0-3 hcp:13-17; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore;responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=XYZ: dopo 1m-1x;1y (tre colori a livello 1) e dopo 1SA dell&#039;apertore, 2♣ = puppet verso 2♦, 2♦ = artificiale forzante a manche&lt;br /&gt;
|cc_text_response_xyz=XYZ: 2♣ puppet verso 2♦ (debole: passo; invito: colore naturale dopo 2♦), 2♦ artificiale GF; 2♥ naturale scoraggiante&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;XYZ&#039;&#039;&#039; è una convenzione di sviluppo del rispondente che, secondo l&#039;articolo di Danny Kleinman su Bridgebum.com, è attribuita a Joe Kivel. Si applica a dieci sequenze senza interventi e rende artificiali e forzanti le ridichiarazioni a 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Dominio ==&lt;br /&gt;
Le sequenze interessate (avversari sempre passati, apertura da mano non passata) sono dieci.&lt;br /&gt;
* Quattro sequenze &amp;quot;a tre colori&amp;quot; tutte a livello 1: 1{{fiori}} 1{{quadri}} 1{{cuori}}; 1{{fiori}} 1{{quadri}} 1{{picche}}; 1{{fiori}} 1{{cuori}} 1{{picche}}; 1{{quadri}} 1{{cuori}} 1{{picche}}.&lt;br /&gt;
* Sei sequenze con 1SA dell&#039;apertore: 1{{fiori}} 1{{quadri}}, 1{{fiori}} 1{{cuori}}, 1{{fiori}} 1{{picche}}, 1{{quadri}} 1{{cuori}}, 1{{quadri}} 1{{picche}}, 1{{cuori}} 1{{picche}}, in ogni caso seguite da 1SA.&lt;br /&gt;
&lt;br /&gt;
== Come si gioca senza XYZ ==&lt;br /&gt;
Per capire che cosa si sostituisce, l&#039;articolo descrive prima il metodo naturale. Nelle sequenze a tre colori le ridichiarazioni a Senza del rispondente sono naturali (1SA circa 6-10 PO, 2SA 11-12, 3SA 13-17); i rialzi del nobile dell&#039;apertore e la ripetizione del proprio nobile hanno range analoghi. Il quarto colore (forzante e spesso artificiale) serve a mantenere la dichiarazione aperta con mani forti. Nel naturale i salti a livello 3 nel quarto colore sono semplicemente invitanti.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente con XYZ ==&lt;br /&gt;
=== 2{{fiori}}: il puppet ===&lt;br /&gt;
Il 2{{fiori}} somiglia a un transfer, ma non mostra quadri: l&#039;apertore deve dire 2{{quadri}} qualunque mano abbia, senza super-accettazioni a 3{{quadri}} né preferenze a salto. Il 2{{fiori}} è artificiale e forzante (da spiegare agli avversari).&lt;br /&gt;
* Con mano debole il rispondente passa il 2{{quadri}} obbligato.&lt;br /&gt;
* Con mano d&#039;invito a manche dichiara al giro successivo un colore naturale; se la dichiarazione non è a salto è un invito (da spiegare). Rispetto al metodo standard resta un livello di dichiarazione in più per un eventuale tentativo dell&#039;apertore.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}}: artificiale e forzante a manche ===&lt;br /&gt;
Il 2{{quadri}} è artificiale e forzante a manche; dopo di esso si torna alla dichiarazione naturale. Lascia spazio all&#039;apertore, per esempio, per dichiarare 2SA e quindi giocare i Senza dalla mano giusta.&lt;br /&gt;
&lt;br /&gt;
=== 2{{cuori}} e 2{{picche}} ===&lt;br /&gt;
2{{cuori}} è naturale e scoraggiante, come nel metodo standard. 2{{picche}} è naturale e scoraggiante quando è un rialzo; se non è un rialzo, e per tutte le dichiarazioni più alte, la mano è forzante e da slam.&lt;br /&gt;
&lt;br /&gt;
== Dopo 1SA dell&#039;apertore ==&lt;br /&gt;
Nelle sei sequenze con 1SA la XYZ funziona come il New Minor Forcing: le ridichiarazioni 2{{fiori}} e 2{{quadri}} diventano artificiali. Per la descrizione dettagliata dei check-back si rimanda alla fonte.&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
Secondo la fonte la XYZ distingue a basso costo le mani d&#039;invito a manche da quelle più forti, sia nelle sequenze a tre colori sia in quelle con 1SA dell&#039;apertore. L&#039;autore la definisce un po&#039; più semplice dei metodi naturali che sostituisce.&lt;br /&gt;
&lt;br /&gt;
== Costi ==&lt;br /&gt;
Secondo la fonte:&lt;br /&gt;
* si perde la preferenza a 2{{fiori}} dopo 1{{fiori}} 1{{cuori}}; 1{{picche}} (non si può dichiarare 2{{fiori}} con una mano come &amp;lt;hand&amp;gt;K6.K1098.653.Q976&amp;lt;/hand&amp;gt;);&lt;br /&gt;
* si creano molte &amp;quot;mani orfane&amp;quot;, cioè mani che avevano una dichiarazione naturale ora sottratta;&lt;br /&gt;
* dopo 1SA dell&#039;apertore si perde il semplice ritiro a 2{{fiori}} dopo 1{{fiori}} 1{{picche}}; 1SA (per esempio con &amp;lt;hand&amp;gt;KQ98.J76.42.Q972&amp;lt;/hand&amp;gt;) e a 2{{fiori}} dopo 1{{quadri}} 1{{picche}}; 1SA o 1{{quadri}} 1{{cuori}}; 1SA;&lt;br /&gt;
* si perde l&#039;opzione di chiedere una preferenza al proprio nobile dopo 1{{fiori}} 1{{cuori}} 1SA (con una 5-5 cuori-quadri e simili);&lt;br /&gt;
* il danno è un po&#039; maggiore che con il solo NMF o con un check-back a 2{{fiori}}, perché diventano orfane due dichiarazioni naturali, 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
=== Puppet e passo ===&lt;br /&gt;
Rispondente debole con fit a quadri. Sud apre di 1{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AQ73.82.KJ752.A4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;K6.QJ98.Q1094.986&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il 2{{fiori}} di Nord è un puppet (non mostra quadri), Sud dice 2{{quadri}} obbligato e Nord passa.&lt;br /&gt;
&lt;br /&gt;
=== Puppet e invito a manche ===&lt;br /&gt;
Nord ha 10 PO e una mano d&#039;invito: dopo il puppet dichiara il colore in modo naturale, non a salto.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ74.K4.AQ752.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ85.A10952.93.K4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P 2S P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la mano massima Sud accetta l&#039;invito a 2{{picche}} e arriva a manche.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}} forzante a manche ===&lt;br /&gt;
Nord ha 13 PO e quadri quinte: il 2{{quadri}} è artificiale e forzante a manche, lascia a Sud lo spazio per 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q65.AK82.84.K1087&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A8.QJ4.QJ1042.K104&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2D P 2NT P 3NT P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2{{picche}} non rialzo (forzante, da slam) ===&lt;br /&gt;
Nord ha un bicolore 5-5 picche-quadri (14 PO). Dopo 1{{fiori}} 1{{quadri}} 1{{cuori}} il 2{{picche}} non è un rialzo e quindi è forzante con interesse di slam.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K4.AJ73.83.KQ962&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;AQJ85.6.AQJ85.74&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2S P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non propone varianti della XYZ in senso stretto: cita invece, come alternative ai check-back dopo 1SA dell&#039;apertore, il &#039;&#039;&#039;Second Round Stayman&#039;&#039;&#039; (2{{fiori}} chiede prima un nobile quarto non dichiarato, poi tre carte nel nobile del rispondente; il solo orfano è un 2{{fiori}} naturale) e il &#039;&#039;Hi-Ro-Jerum&#039;&#039;, che incorpora la &amp;quot;Spade Inversion&amp;quot;. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Opinione dell&#039;autore ==&lt;br /&gt;
Kleinman osserva che la XYZ e i check-back dopo 1SA possono essere utili in alcune smazzate, ma che fanno più male che bene per via delle mani orfane che creano. Poiché preferisce rialzare liberamente le risposte di 1{{cuori}} e 1{{picche}}, dichiara di non averli mai usati. È una sua scelta personale, non una regola.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Walsh]] — Nella lezione 05 del &#039;&#039;Corso Preagonistica 2026&#039;&#039; di Marina Causa la prosecuzione dopo la Walsh è chiamata &amp;quot;XY&amp;quot; ed è analoga nello schema (2{{fiori}} puppet verso 2{{quadri}}, 2{{quadri}} relé forzante a manche, 2SA transfer a 3{{fiori}}). Le due convenzioni hanno uno schema affine ma non sono la stessa: la XYZ è definita dall&#039;articolo di Bridgebum sulle dieci sequenze sopra indicate.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Danny Kleinman, &amp;quot;XYZ&amp;quot;, Bridgebum.com, © Jeff Tang, https://www.bridgebum.com/xyz.php (ideazione attribuita a Joe Kivel secondo l&#039;articolo). Sintesi e riscrittura in italiano; gli esempi sono rielaborati.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=XYZ&amp;diff=2017</id>
		<title>XYZ</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=XYZ&amp;diff=2017"/>
		<updated>2026-11-10T20:45:26Z</updated>

		<summary type="html">&lt;p&gt;Lpala: shape_constraints: apertore 12-14 PO, rispondente debole o 11+; chiariti range ipotetici&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:XYZ}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=XYZ&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Dopo certe sequenze di apertura e risposta a livello 1 con ridichiarazione dell&#039;apertore, rendere artificiali e forzanti le ridichiarazioni 2{{fiori}} e 2{{quadri}} del rispondente, così da distinguere a basso livello le mani d&#039;invito da quelle più forti. Secondo l&#039;articolo di Danny Kleinman l&#039;ideazione è attribuita a Joe Kivel.&lt;br /&gt;
|trigger=Dieci sequenze senza interventi iniziate da una mano non passata. Quattro &amp;quot;a tre colori&amp;quot; a livello 1: 1{{fiori}}-1{{quadri}};1{{cuori}}, 1{{fiori}}-1{{quadri}};1{{picche}}, 1{{fiori}}-1{{cuori}};1{{picche}}, 1{{quadri}}-1{{cuori}};1{{picche}}. Sei con apertura, risposta e 1SA dell&#039;apertore: 1{{fiori}}-1{{quadri}}, 1{{fiori}}-1{{cuori}}, 1{{fiori}}-1{{picche}}, 1{{quadri}}-1{{cuori}}, 1{{quadri}}-1{{picche}}, 1{{cuori}}-1{{picche}}, tutte seguite da 1SA.&lt;br /&gt;
|risposte=Nelle quattro sequenze a tre colori: 2{{fiori}} del rispondente = &amp;quot;puppet&amp;quot; verso 2{{quadri}}: non mostra quadri, è artificiale e forzante e l&#039;apertore deve dire 2{{quadri}} con qualunque mano (niente super-accettazioni a 3{{quadri}} né preferenze a salto). Il rispondente può passare 2{{quadri}} con mano debole, oppure dichiarare un colore naturale al giro successivo con mano d&#039;invito (se non è a salto è un invito, da spiegare agli avversari). 2{{quadri}} del rispondente = artificiale e forzante a manche, poi si torna al naturale. 2{{cuori}} è naturale e scoraggiante; 2{{picche}} è naturale e scoraggiante solo se è un rialzo, mentre 2{{picche}} non rialzo e le dichiarazioni più alte sono forzanti e da slam. Dopo 1SA dell&#039;apertore (sei sequenze) 2{{fiori}} e 2{{quadri}} funzionano come il New Minor Forcing.&lt;br /&gt;
|note=Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata. Costi indicati dall&#039;autore: si perde la preferenza a 2{{fiori}} dopo 1{{fiori}}-1{{cuori}};1{{picche}}, si creano molte mani orfane, e dopo 1SA si perde il semplice ritiro a 2{{fiori}} (per esempio dopo 1{{fiori}}-1{{picche}};1SA e 1{{quadri}}-1{{picche}};1SA). Il range dell&#039;1SA di ridichiarazione non è indicato nella fonte: negli scenari si usa 12-14 PO come ipotesi di lavoro. Negli scenari l&#039;apertore ha sempre 12-14 PO (con 15-17 bilanciati aprirebbe 1SA, quindi non ha una mano da 1SA) e il rispondente ha mano debole (5-8 PO) oppure 11 o più PO; tutti gli intervalli di punti sono ipotesi nostre (non indicato nella fonte). Varianti sui check-back dopo 1SA citate dalla fonte: Second Round Stayman e Hi-Ro-Jerum. La preferenza dell&#039;autore (non usare check-back) è una sua opinione.&lt;br /&gt;
|tag_cc=response_xyz&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints=1D-1H;1S poi 2C puppet e passo dopo 2D (rispondente debole con 4 cuori e fit a quadri): pairhcp:17-22 opener D:4+ S:4 H:0-3 hcp:12-14; responder H:4+ D:3+ S:0-3 hcp:5-8; opp1 quiet; opp2 quiet // 1D-1H;1S 2C puppet poi invito a manche con colore naturale (11-12 PO): pairhcp:23-26 opener D:4+ S:4 H:0-3 hcp:12-14; responder S:4 H:5 hcp:11-12; opp1 quiet; opp2 quiet // 2D forzante a manche dopo 1C-1D;1H: pairhcp:24-29 opener C:3+ H:4 D:0-3 hcp:12-14; responder D:5+ H:3 hcp:12-15; opp1 quiet; opp2 quiet // 2H naturale scoraggiante dopo 1C-1H;1S: pairhcp:17-22 opener C:4+ S:4 H:0-2 hcp:12-14; responder H:6 S:3 hcp:5-8; opp1 quiet; opp2 quiet // 2S non rialzo forzante da slam dopo 1C-1D;1H: pairhcp:27-32 opener C:4+ H:4 hcp:12-14; responder S:5 D:6+ hcp:15-18; opp1 quiet; opp2 quiet // new minor forcing dopo 1C-1S;1SA con 2D (1SA 12-14 ipotesi): pairhcp:24-29 opener shape:balanced S:2-3 hcp:12-14; responder S:5 hcp:12-15; opp1 quiet; opp2 quiet // costo dopo 1D-1S;1SA perso il ritiro a 2C naturale (1SA 12-14 ipotesi): pairhcp:17-22 opener shape:balanced hcp:12-14; responder S:4 C:5+ hcp:5-8; opp1 quiet; opp2 quiet // quadri lunghe e 2D artificiale forzante dopo 1C-1D;1S: pairhcp:25-31 opener C:3+ S:4 hcp:12-14; responder D:6+ S:0-3 hcp:13-17; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore;responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=XYZ: dopo 1m-1x;1y (tre colori a livello 1) e dopo 1SA dell&#039;apertore, 2♣ = puppet verso 2♦, 2♦ = artificiale forzante a manche&lt;br /&gt;
|cc_text_response_xyz=XYZ: 2♣ puppet verso 2♦ (debole: passo; invito: colore naturale dopo 2♦), 2♦ artificiale GF; 2♥ naturale scoraggiante&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;XYZ&#039;&#039;&#039; è una convenzione di sviluppo del rispondente che, secondo l&#039;articolo di Danny Kleinman su Bridgebum.com, è attribuita a Joe Kivel. Si applica a dieci sequenze senza interventi e rende artificiali e forzanti le ridichiarazioni a 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Dominio ==&lt;br /&gt;
Le sequenze interessate (avversari sempre passati, apertura da mano non passata) sono dieci.&lt;br /&gt;
* Quattro sequenze &amp;quot;a tre colori&amp;quot; tutte a livello 1: 1{{fiori}} 1{{quadri}} 1{{cuori}}; 1{{fiori}} 1{{quadri}} 1{{picche}}; 1{{fiori}} 1{{cuori}} 1{{picche}}; 1{{quadri}} 1{{cuori}} 1{{picche}}.&lt;br /&gt;
* Sei sequenze con 1SA dell&#039;apertore: 1{{fiori}} 1{{quadri}}, 1{{fiori}} 1{{cuori}}, 1{{fiori}} 1{{picche}}, 1{{quadri}} 1{{cuori}}, 1{{quadri}} 1{{picche}}, 1{{cuori}} 1{{picche}}, in ogni caso seguite da 1SA.&lt;br /&gt;
&lt;br /&gt;
== Come si gioca senza XYZ ==&lt;br /&gt;
Per capire che cosa si sostituisce, l&#039;articolo descrive prima il metodo naturale. Nelle sequenze a tre colori le ridichiarazioni a Senza del rispondente sono naturali (1SA circa 6-10 PO, 2SA 11-12, 3SA 13-17); i rialzi del nobile dell&#039;apertore e la ripetizione del proprio nobile hanno range analoghi. Il quarto colore (forzante e spesso artificiale) serve a mantenere la dichiarazione aperta con mani forti. Nel naturale i salti a livello 3 nel quarto colore sono semplicemente invitanti.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente con XYZ ==&lt;br /&gt;
=== 2{{fiori}}: il puppet ===&lt;br /&gt;
Il 2{{fiori}} somiglia a un transfer, ma non mostra quadri: l&#039;apertore deve dire 2{{quadri}} qualunque mano abbia, senza super-accettazioni a 3{{quadri}} né preferenze a salto. Il 2{{fiori}} è artificiale e forzante (da spiegare agli avversari).&lt;br /&gt;
* Con mano debole il rispondente passa il 2{{quadri}} obbligato.&lt;br /&gt;
* Con mano d&#039;invito a manche dichiara al giro successivo un colore naturale; se la dichiarazione non è a salto è un invito (da spiegare). Rispetto al metodo standard resta un livello di dichiarazione in più per un eventuale tentativo dell&#039;apertore.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}}: artificiale e forzante a manche ===&lt;br /&gt;
Il 2{{quadri}} è artificiale e forzante a manche; dopo di esso si torna alla dichiarazione naturale. Lascia spazio all&#039;apertore, per esempio, per dichiarare 2SA e quindi giocare i Senza dalla mano giusta.&lt;br /&gt;
&lt;br /&gt;
=== 2{{cuori}} e 2{{picche}} ===&lt;br /&gt;
2{{cuori}} è naturale e scoraggiante, come nel metodo standard. 2{{picche}} è naturale e scoraggiante quando è un rialzo; se non è un rialzo, e per tutte le dichiarazioni più alte, la mano è forzante e da slam.&lt;br /&gt;
&lt;br /&gt;
== Dopo 1SA dell&#039;apertore ==&lt;br /&gt;
Nelle sei sequenze con 1SA la XYZ funziona come il New Minor Forcing: le ridichiarazioni 2{{fiori}} e 2{{quadri}} diventano artificiali. Per la descrizione dettagliata dei check-back si rimanda alla fonte.&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
Secondo la fonte la XYZ distingue a basso costo le mani d&#039;invito a manche da quelle più forti, sia nelle sequenze a tre colori sia in quelle con 1SA dell&#039;apertore. L&#039;autore la definisce un po&#039; più semplice dei metodi naturali che sostituisce.&lt;br /&gt;
&lt;br /&gt;
== Costi ==&lt;br /&gt;
Secondo la fonte:&lt;br /&gt;
* si perde la preferenza a 2{{fiori}} dopo 1{{fiori}} 1{{cuori}}; 1{{picche}} (non si può dichiarare 2{{fiori}} con una mano come &amp;lt;hand&amp;gt;K6.K1098.653.Q976&amp;lt;/hand&amp;gt;);&lt;br /&gt;
* si creano molte &amp;quot;mani orfane&amp;quot;, cioè mani che avevano una dichiarazione naturale ora sottratta;&lt;br /&gt;
* dopo 1SA dell&#039;apertore si perde il semplice ritiro a 2{{fiori}} dopo 1{{fiori}} 1{{picche}}; 1SA (per esempio con &amp;lt;hand&amp;gt;KQ98.J76.42.Q972&amp;lt;/hand&amp;gt;) e a 2{{fiori}} dopo 1{{quadri}} 1{{picche}}; 1SA o 1{{quadri}} 1{{cuori}}; 1SA;&lt;br /&gt;
* si perde l&#039;opzione di chiedere una preferenza al proprio nobile dopo 1{{fiori}} 1{{cuori}} 1SA (con una 5-5 cuori-quadri e simili);&lt;br /&gt;
* il danno è un po&#039; maggiore che con il solo NMF o con un check-back a 2{{fiori}}, perché diventano orfane due dichiarazioni naturali, 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
=== Puppet e passo ===&lt;br /&gt;
Rispondente debole con fit a quadri. Sud apre di 1{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AQ73.82.KJ752.A4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;K6.QJ98.Q1094.986&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il 2{{fiori}} di Nord è un puppet (non mostra quadri), Sud dice 2{{quadri}} obbligato e Nord passa.&lt;br /&gt;
&lt;br /&gt;
=== Puppet e invito a manche ===&lt;br /&gt;
Nord ha 10 PO e una mano d&#039;invito: dopo il puppet dichiara il colore in modo naturale, non a salto.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ74.K4.AQ752.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ85.A10952.93.K4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P 2S P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la mano massima Sud accetta l&#039;invito a 2{{picche}} e arriva a manche.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}} forzante a manche ===&lt;br /&gt;
Nord ha 13 PO e quadri quinte: il 2{{quadri}} è artificiale e forzante a manche, lascia a Sud lo spazio per 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q65.AK82.84.K1087&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A8.QJ4.QJ1042.K104&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2D P 2NT P 3NT P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2{{picche}} non rialzo (forzante, da slam) ===&lt;br /&gt;
Nord ha un bicolore forte picche-quadri. Dopo 1{{fiori}} 1{{quadri}} 1{{cuori}} il 2{{picche}} non è un rialzo e quindi è forzante con interesse di slam.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K4.AJ73.83.KQ962&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;AKQ85.6.KQJ1042.7&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2S P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non propone varianti della XYZ in senso stretto: cita invece, come alternative ai check-back dopo 1SA dell&#039;apertore, il &#039;&#039;&#039;Second Round Stayman&#039;&#039;&#039; (2{{fiori}} chiede prima un nobile quarto non dichiarato, poi tre carte nel nobile del rispondente; il solo orfano è un 2{{fiori}} naturale) e il &#039;&#039;Hi-Ro-Jerum&#039;&#039;, che incorpora la &amp;quot;Spade Inversion&amp;quot;. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Opinione dell&#039;autore ==&lt;br /&gt;
Kleinman osserva che la XYZ e i check-back dopo 1SA possono essere utili in alcune smazzate, ma che fanno più male che bene per via delle mani orfane che creano. Poiché preferisce rialzare liberamente le risposte di 1{{cuori}} e 1{{picche}}, dichiara di non averli mai usati. È una sua scelta personale, non una regola.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Walsh]] — Nella lezione 05 del &#039;&#039;Corso Preagonistica 2026&#039;&#039; di Marina Causa la prosecuzione dopo la Walsh è chiamata &amp;quot;XY&amp;quot; ed è analoga nello schema (2{{fiori}} puppet verso 2{{quadri}}, 2{{quadri}} relé forzante a manche, 2SA transfer a 3{{fiori}}). Le due convenzioni hanno uno schema affine ma non sono la stessa: la XYZ è definita dall&#039;articolo di Bridgebum sulle dieci sequenze sopra indicate.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Danny Kleinman, &amp;quot;XYZ&amp;quot;, Bridgebum.com, © Jeff Tang, https://www.bridgebum.com/xyz.php (ideazione attribuita a Joe Kivel secondo l&#039;articolo). Sintesi e riscrittura in italiano; gli esempi sono rielaborati.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Walsh&amp;diff=2016</id>
		<title>Walsh</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Walsh&amp;diff=2016"/>
		<updated>2026-11-03T06:11:11Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Vedi anche: XYZ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Walsh}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
[[Categoria:Risposte a 1 fiori]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Walsh&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Su apertura di 1{{fiori}}, anticipare il maggiore a discapito delle quadri (anche se più lunghe) con tutte le mani da 4 a 11 punti, per mettere in pista un nobile scavalcando le quadri (utile nella competizione) e per nascondere all&#039;attacco le eventuali quarte nobili dell&#039;apertore bilanciato.&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} del compagno. Il rispondente con 4+ carte in un nobile e 4-11 punti onori risponde direttamente 1{{cuori}} o 1{{picche}}, saltando le quadri. Con mano da manche (FM, 12+ PO) si segue la sequenza naturale: 1{{quadri}} (solo se quinte o più), poi il nobile.&lt;br /&gt;
|risposte=Da 4 a 11 PO con un nobile: 1{{cuori}}/1{{picche}} diretto, anche con quadri più lunghe. Mano FM (12+): 1{{quadri}} (solo con quadri quinte o più) e poi il nobile; con quadri solo quarte si risponde comunque 1{{cuori}}. Dopo 1{{fiori}} 1{{quadri}}, se l&#039;apertore ridichiara un colore a livello 1 mostra una mano sbilanciata (fiori lunghi o tricolore); se ridichiara 1SA, dopo 1{{fiori}} 1{{quadri}} 1SA la ridichiarazione 2{{cuori}} del rispondente garantisce i cuori. Prosecuzione XY (dopo 1{{fiori}}-1{{quadri}}-1 e simili): 2{{fiori}} = transfer per 2{{quadri}} (parziale a quadri o tutte le mani di invito); 2{{quadri}} = relé forzante manche; 2SA = transfer per 3{{fiori}} (parziale a fiori o mani 5/5 di 15+ con almeno due onori maggiori in entrambi i colori).&lt;br /&gt;
|note=Contenuto trascritto da slide: revisione da parte di un esperto consigliata. Il range dell&#039;1SA di ridichiarazione dell&#039;apertore non è indicato nella fonte. Con l&#039;XY: la ripetizione del nobile di risposta è da passare; la dichiarazione di 2{{cuori}} dopo risposta 1{{picche}} non è forzante (max 9/10); tutte le dichiarazioni a livello tre, tradizionalmente invitanti e quindi passabili, diventano forzanti manche (perché tutti gli inviti passano dal 2{{fiori}}).&lt;br /&gt;
|tag_cc=response_walsh&lt;br /&gt;
|tag_sistema=naturale,quinta_nobile&lt;br /&gt;
|shape_constraints=1H su 1C con 4 cuori e 4-11 PO, saltando le quadri: pairhcp:16-28 opener hcp:12-17; responder H:4+ hcp:4-11; opp1 quiet; opp2 quiet // 1H con quadri più lunghe (quadri saltate): pairhcp:16-28 opener hcp:12-17; responder H:4 D:5+ hcp:4-11; opp1 quiet; opp2 quiet // 1S su 1C con 4 picche e 4-11 PO, saltando le quadri: pairhcp:16-28 opener hcp:12-17; responder S:4+ hcp:4-11; opp1 quiet; opp2 quiet // 1S con quadri più lunghe (quadri saltate): pairhcp:16-28 opener hcp:12-17; responder S:4 D:5+ hcp:4-11; opp1 quiet; opp2 quiet // FM con quadri 5+ e cuori quarti 1D poi cuori: pairhcp:24-33 opener hcp:12-17; responder D:5+ H:4 hcp:12-16; opp1 quiet; opp2 quiet // FM con quadri 5+ e picche quarte 1D poi picche: pairhcp:24-33 opener hcp:12-17; responder D:5+ S:4 hcp:12-16; opp1 quiet; opp2 quiet // apertore bilanciato che ridichiara 1SA dopo 1D (range 1SA non indicato nella fonte): pairhcp:18-28 opener shape:balanced hcp:12-14; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // apertore sbilanciato con fiori lunghi che ridichiara a livello 1 dopo 1D: pairhcp:18-28 opener C:6+ S:4 hcp:12-17; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // apertore tricolore che ridichiara a livello 1 dopo 1D: pairhcp:18-28 opener shape:three_suiter S:4 hcp:12-17; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // transfer 2C per parziale a quadri dopo 1S 1SA: pairhcp:16-24 opener shape:balanced hcp:12-14; responder S:4 D:5 hcp:5-9; opp1 quiet; opp2 quiet // transfer 2C per invito a manche con 5 cuori dopo 1H 1SA: pairhcp:22-26 opener shape:balanced hcp:12-14; responder H:5 hcp:10-11; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore (1{{fiori}});responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=Walsh: su 1♣ si risponde 1♥/1♠ con 4+ nobili e 4-11 PO (salta le quadri); con 12+ 1♦ (quinte+) poi il nobile&lt;br /&gt;
|cc_text_response_walsh=Walsh: su 1♣ nobile diretto con 4-11 PO anche saltando le quadri; 12+ PO 1♦ poi nobile; 1♦ poi XY (2♣ transfer a 2♦, 2♦ relé FM, 2SA transfer a 3♣)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Contenuto trascritto da slide (Marina Causa, Corso Preagonistica 2026): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;Walsh&#039;&#039;&#039; è un accordo per cui, &#039;&#039;&#039;su apertura di 1{{fiori}}&#039;&#039;&#039;, si &#039;&#039;&#039;anticipa il maggiore a discapito delle quadri&#039;&#039;&#039; (anche se più lunghe) &#039;&#039;&#039;con tutte le mani da 4 a 11 punti&#039;&#039;&#039;. Se invece la mano è da manche (FM) si segue la sequenza naturale: quadri (solo se quinte o più), poi il nobile.&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
* Su 1{{fiori}}, con 4+ carte nobili e 4-11 PO: si risponde direttamente &#039;&#039;&#039;1{{cuori}}&#039;&#039;&#039; o &#039;&#039;&#039;1{{picche}}&#039;&#039;&#039;, saltando le quadri, anche se le quadri sono più lunghe.&lt;br /&gt;
* Con mano da manche (FM, 12+): sequenza naturale, &#039;&#039;&#039;1{{quadri}}&#039;&#039;&#039; (solo se quinte o più) e poi il nobile.&lt;br /&gt;
&lt;br /&gt;
=== Esempi della fonte (apertura 1{{fiori}} del compagno) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Mano !! Risposta !! Nota&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;J84.A984.Q982.J7&amp;lt;/hand&amp;gt; || 1{{cuori}} || 4-11 PO: nobile diretto&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;K74.Q984.A9862.7&amp;lt;/hand&amp;gt; || 1{{cuori}} || quadri più lunghe, ma si anticipa il nobile&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;J4.AQ84.K982.KQ7&amp;lt;/hand&amp;gt; || 1{{cuori}} || mano FM, ma le quadri sono solo quarte&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;K74.AQ84.AKJ82.7&amp;lt;/hand&amp;gt; || 1{{quadri}} || mano FM: poi si dichiarano le cuori&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
=== 1) Un nobile in pista scavalcando le quadri ===&lt;br /&gt;
Mette in pista un nobile scavalcando le quadri (cosa che di solito l&#039;apertore non ha quando apre 1{{fiori}}): dal punto di vista della strategia di competizione è una scelta vincente (la fonte aggiunge: persino se il compagno non sa che si sta giocando Walsh da soli).&lt;br /&gt;
&lt;br /&gt;
Esempio della fonte (Sud apre):&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q63.A1065.KQ4.Q98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;52.KQ74.A10962.63&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H 1S 2H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord-Sud si sono potuti assestare velocemente su un parziale di 8 atout. Secondo la fonte, forse E/O potevano insistere a picche, forse avevano un ottimo fit a fiori; di certo, se Nord avesse risposto 1{{quadri}}, su 1{{picche}} Sud sarebbe passato e a bocce ferme per E/O sarebbe stato più facile appropriarsi del parziale.&lt;br /&gt;
&lt;br /&gt;
=== 2) L&#039;apertore bilanciato nasconde le quarte nobili ===&lt;br /&gt;
Se l&#039;apertore è bilanciato di diritto e la risposta è 1{{quadri}} in prima istanza, si comporta come se il compagno non avesse quarte nobili e dichiara comunque 1SA. Con questa replica può nascondere una quarta nobile, o anche tutte e due; se resta il contratto finale, l&#039;attaccante sarà completamente alla cieca.&lt;br /&gt;
&lt;br /&gt;
Esempio della fonte: dopo 1{{fiori}} 1{{quadri}} 1SA 3SA l&#039;attaccante ha &#039;&#039;mano completata&#039;&#039; (la slide dà picche J10xx, cuori KJxx, quadri Jx, fiori Qxx):&lt;br /&gt;
&amp;lt;hand&amp;gt;J1085.KJ73.J2.Q64&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sa che il morto scenderà senza quarte nobili, ma il vivo potrebbe averle entrambe, o solo una, o nessuna: non sa praticamente niente della mano del giocante.&lt;br /&gt;
&lt;br /&gt;
Smazzata della fonte (Sud apre):&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ63.AJ65.Q4.Q95&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;852.104.KJ62.KJ63&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nessun rischio di perdere una manche nobile ===&lt;br /&gt;
La fonte nota che non c&#039;è pericolo di perdere una manche nel nobile: se il rispondente ha almeno 12 punti dichiara 1{{quadri}} all&#039;inizio e poi prosegue dichiarando il nobile, svelando la forza oltre alla bicolore almeno 5/4.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ63.AJ65.Q4.Q95&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;Q2.K1084.KJ962.A3&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2H P 3H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord si accontenta della manche perché ha 13 e sa di fronteggiare una bilanciata di diritto; con la stessa mano e visuale di slam potrebbe, su 3{{cuori}}, iniziare a dare i controlli. Il seguito (una volta chiarito che il rispondente ha 12+ con quadri lunghe e la quarta nobile che annuncia) è tutto naturale:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K9.AJ94.Q72.Q1096&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;Q1043.K8.AJ953.K5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2S P 2SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conseguenze sulle ridichiarazioni ==&lt;br /&gt;
* &#039;&#039;&#039;Apertore sbilanciato&#039;&#039;&#039;: quando, sulla risposta di 1{{quadri}}, l&#039;apertore ridichiara un colore a livello 1, mostra automaticamente una mano sbilanciata, e quindi fiori lunghi o tricolore. Esempio della fonte (&#039;&#039;mano completata&#039;&#039;, la slide dà AKxx, x, Axx, Qxxxx): &amp;lt;hand&amp;gt;AK63.4.A52.Q9873&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;2{{cuori}} del rispondente dopo 1SA&#039;&#039;&#039;: in un sistema standard la ridichiarazione di 2{{cuori}} mostrerebbe valori nel colore e non necessariamente quattro carte; giocando Walsh il colore di cuori è garantito, per il fatto che l&#039;apertore potrebbe avere fit nel seme. Nord si presenterà quindi con carte tipo (slide: KJx, AJxx, KQxxx, x; &#039;&#039;mano completata&#039;&#039;): &amp;lt;hand&amp;gt;KJ4.AJ73.KQ982.6&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
* La sequenza 1{{fiori}} 1{{quadri}} 1SA 2{{cuori}} va considerata &#039;&#039;&#039;forzante di manche&#039;&#039;&#039; perché, adottando anche la convenzione XY, ci sarà modo di raccontare le carte di Nord quando si trova con una 4/6 invitante.&lt;br /&gt;
&lt;br /&gt;
=== Nota sulle sequenze con 2{{quadri}} dell&#039;apertore ===&lt;br /&gt;
La fonte avverte che giocare Walsh è abbastanza facile e rilassante, purché si faccia l&#039;orecchio ad alcune sequenze delicate; indica due situazioni a cui prestare attenzione. Per la prima mostra la sequenza 1{{fiori}} 1{{picche}} 2{{fiori}} 2{{quadri}} (&amp;quot;??&amp;quot; sulla slide) con la mano seguente (&#039;&#039;mano completata&#039;&#039;, la slide dà Ax, Kx, xxx, AQxxxx): &amp;lt;hand&amp;gt;A4.K5.763.AQ9842&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 2C P 2D P&amp;lt;/bidding&amp;gt; La fonte dice che questa, per nessun motivo, può essere considerata una sequenza Walsh; la ridichiarazione di 2{{quadri}} è indispensabile per indagare ancora. In queste situazioni il rispondente, se ha il corto-lungo Walsh, deve rassegnarsi e passare, sperando che l&#039;apertore abbia sei carte di fiori. (La slide descrive solo una delle due situazioni annunciate.)&lt;br /&gt;
&lt;br /&gt;
== Prosecuzione &amp;quot;XY&amp;quot; dopo 1{{fiori}}-1{{quadri}}-1... ==&lt;br /&gt;
Giocando XY non serve più il nuovo colore forzante (non nelle sequenze a livello 1), né il check back né altro. L&#039;idea: tutto ruota su tre possibili repliche del rispondente.&lt;br /&gt;
* &#039;&#039;&#039;2{{fiori}}&#039;&#039;&#039;: transfer per 2{{quadri}}. Con tutte le mani che vogliono giocare un parziale a quadri oppure tutte le mani con forza di invito, che si chiarirà dopo.&lt;br /&gt;
* &#039;&#039;&#039;2{{quadri}}&#039;&#039;&#039;: relé FM, con tutte le mani con cui il rispondente vuole interrogare.&lt;br /&gt;
* &#039;&#039;&#039;2SA&#039;&#039;&#039;: transfer per 3{{fiori}}. Con tutte le mani che vogliono giocare un parziale a fiori oppure tutte le mani 5/5 di 15+ con almeno due onori maggiori in entrambi i colori.&lt;br /&gt;
&lt;br /&gt;
Inoltre, qualcosa cambia:&lt;br /&gt;
* La ripetizione del nobile di risposta è da passare.&lt;br /&gt;
* La dichiarazione di 2{{cuori}} dopo risposta 1{{picche}} è non forzante (max 9/10).&lt;br /&gt;
* Tutte le dichiarazioni a livello tre, tradizionalmente invitanti e quindi passabili, usando l&#039;XY diventano FM (perché tutti gli inviti passano dal 2{{fiori}}).&lt;br /&gt;
&lt;br /&gt;
=== 2{{fiori}}, il transfer per gli inviti a manche o per le quadri ===&lt;br /&gt;
Con qualsiasi mano invitante il rispondente ridichiara 2{{fiori}} (e l&#039;apertore dovrà dire 2{{quadri}}). L&#039;apertore, con 11/16, dovrà rispettare il transfer. Dopodiché si aprono due possibilità.&lt;br /&gt;
&lt;br /&gt;
==== a) Intenzione di giocare un parziale a quadri ====&lt;br /&gt;
Secondo la fonte è più che possibile e, giocando Walsh, è un modo intelligente di recuperare una lunga ignorata al primo giro. Chissà, forse 1SA era un buon parziale e forse no, di certo 2{{quadri}} non dovrebbe essere una brutta scelta: se sfortunati si troveranno 2 carte, altrimenti 3.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q2.A82.J54.AJ976&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;KJ104.43.KQ952.103&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 1SA P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo &amp;quot;stop&amp;quot; a 2{{quadri}} non è automatico: poiché l&#039;apertore ha ridichiarato a colore 1 su 1, potrebbe ancora avere una mano che sfiora il rever. Nel timore che Nord si volesse fermare a un parziale a quadri (sempre possibile: se ora arrivasse il 3{{quadri}} Sud si rassegnerebbe) Sud disobbedisce, descrivendosi ancora: la pennellata a 3{{fiori}} descrive proprio queste carte, e questa forza onori. Esempio della fonte, nella forma riportata dalla slide (apertura 1{{quadri}}; &#039;&#039;mano completata&#039;&#039;, la slide dà KQJ7, 4, AK854, A92):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQJ7.4.AK854.A92&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 3C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La disobbedienza deve presentare ottimi motivi, anche se la mano non è particolarmente forte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;K10.AQ87.4.KQJ972&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2C P 3C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se Nord ha una mano invitante a manche farà le sue deduzioni: questo 3{{fiori}} dice &amp;quot;sono certo che questo parziale sia meglio, se era nelle tue intenzioni proporre di giocare 2{{quadri}}: io avrei detto 2{{quadri}} e tu Passo... ma ti prevengo con una sesta solidissima e un punteggio non minimo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== b) Invito a manche ====&lt;br /&gt;
Se ha intenzione di formulare un invito a manche (quindi la forza onori sarà intorno ai 10/11 punti), invece di passare il rispondente formulerà, a livello di estrema sicurezza, l&#039;invito che intende proporre.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito con 5 carte di cuori&#039;&#039;&#039; (&amp;quot;sono invitante a manche con 5 carte di cuori&amp;quot;): Sud giustamente declina, né si prende il mal di pancia, con 12, di correggere a 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AK52.102.K54.Q872&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;94.AQJ74.A93.643&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1S P 2C P 2D P 2H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se le carte di Nord fossero state &amp;lt;hand&amp;gt;94.AQ9854.A54.65&amp;lt;/hand&amp;gt; avrebbe detto 2{{fiori}} e poi 3{{cuori}}: invitante, ma questa volta con almeno 6 carte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito con fit a picche&#039;&#039;&#039; (&amp;quot;sono invitante a manche con fit a picche&amp;quot;): Sud è minimo e passa. La fonte nota come sia straordinario riuscire a formulare a livello due un invito che, in qualunque naturale, si dovrebbe spingere a livello 3; a volte si è già sotto, nonostante il fit di 8 carte e i 22/23 punti in linea.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;A1052.82.AJ54.K72&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;KQJ4.AJ74.93.643&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1S P 2C P 2D P 2S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito a 3SA&#039;&#039;&#039; (&amp;quot;sono invitante a 3SA&amp;quot;): rialza se sei massimo. Secondo la fonte nulla di speciale: anche nel naturale classico senza fronzoli Sud avrebbe detto 1SA, Nord avrebbe invitato con 2SA e il risultato sarebbe stato comunque 3SA. Attenzione: quando invita a Senza il rispondente nega di avere 5 carte nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K105.Q2.A109.KJ1072&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ84.KJ74.Q83.Q3&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1SA P 2C P 2D P 2SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito 5-4 (picche e cuori)&#039;&#039;&#039;: Nord risponde normalmente 1{{picche}}, poi trasferisce con il 2{{fiori}} e mostra infine una mano &amp;quot;invitante con 5 picche e 4 cuori&amp;quot;; Sud con 14 accetta e rialza a manche.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K5.QJ92.A105.A1092&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A9842.K1074.KJ.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 1SA P 2C P 2D P 2H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Secondo la fonte, se Nord avesse detto le cuori direttamente su 1SA avrebbe mostrato una mano limite, da 6 fino al punteggio da invito; se di cuori ne avesse dette 3, dopo essere passato dal transfer, avrebbe mostrato una 5-5 invitante. Occorre ricordarsi che il 2{{fiori}} prelude sempre a una mano non più che invitante, quindi al massimo 11.&lt;br /&gt;
&lt;br /&gt;
== Picche e poi cuori ==&lt;br /&gt;
La fonte osserva che la sequenza di risposta &amp;quot;picche e poi cuori&amp;quot; è sempre stata delicatissima nel naturale senza convenzioni: essendo un cambio di colore forzante, chiedeva all&#039;apertore di rialzare a 3 cuori tutte le volte che, anche con 12, preferiva il secondo colore. Questo creava al rispondente crisi di coscienza imbarazzanti (esempio della slide con apertura 1{{quadri}}: picche KJxxx, cuori AJxx, quadri xx, fiori xx, dopo 1{{quadri}} 1{{picche}} 1SA). Il fatto che, con l&#039;XY, la replica 2{{cuori}} sia passabile è un grande sollievo.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non indica varianti della convenzione. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[XYZ]]&lt;br /&gt;
* [[Stayman]]&lt;br /&gt;
* [[Fiori forte]]&lt;br /&gt;
* [[Precision]]&lt;br /&gt;
* [[Landy]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, lezione 05 — La convenzione WALSH (slide).&lt;br /&gt;
* Nota: il contenuto è trascritto da slide; revisione da parte di un esperto consigliata. Gli esempi con &amp;quot;x&amp;quot; sulla slide sono indicati come &#039;&#039;mano completata&#039;&#039; con carte basse plausibili.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=XYZ&amp;diff=2015</id>
		<title>XYZ</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=XYZ&amp;diff=2015"/>
		<updated>2026-11-03T06:11:05Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Correzione etichetta scenario 7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:XYZ}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=XYZ&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Dopo certe sequenze di apertura e risposta a livello 1 con ridichiarazione dell&#039;apertore, rendere artificiali e forzanti le ridichiarazioni 2{{fiori}} e 2{{quadri}} del rispondente, così da distinguere a basso livello le mani d&#039;invito da quelle più forti. Secondo l&#039;articolo di Danny Kleinman l&#039;ideazione è attribuita a Joe Kivel.&lt;br /&gt;
|trigger=Dieci sequenze senza interventi iniziate da una mano non passata. Quattro &amp;quot;a tre colori&amp;quot; a livello 1: 1{{fiori}}-1{{quadri}};1{{cuori}}, 1{{fiori}}-1{{quadri}};1{{picche}}, 1{{fiori}}-1{{cuori}};1{{picche}}, 1{{quadri}}-1{{cuori}};1{{picche}}. Sei con apertura, risposta e 1SA dell&#039;apertore: 1{{fiori}}-1{{quadri}}, 1{{fiori}}-1{{cuori}}, 1{{fiori}}-1{{picche}}, 1{{quadri}}-1{{cuori}}, 1{{quadri}}-1{{picche}}, 1{{cuori}}-1{{picche}}, tutte seguite da 1SA.&lt;br /&gt;
|risposte=Nelle quattro sequenze a tre colori: 2{{fiori}} del rispondente = &amp;quot;puppet&amp;quot; verso 2{{quadri}}: non mostra quadri, è artificiale e forzante e l&#039;apertore deve dire 2{{quadri}} con qualunque mano (niente super-accettazioni a 3{{quadri}} né preferenze a salto). Il rispondente può passare 2{{quadri}} con mano debole, oppure dichiarare un colore naturale al giro successivo con mano d&#039;invito (se non è a salto è un invito, da spiegare agli avversari). 2{{quadri}} del rispondente = artificiale e forzante a manche, poi si torna al naturale. 2{{cuori}} è naturale e scoraggiante; 2{{picche}} è naturale e scoraggiante solo se è un rialzo, mentre 2{{picche}} non rialzo e le dichiarazioni più alte sono forzanti e da slam. Dopo 1SA dell&#039;apertore (sei sequenze) 2{{fiori}} e 2{{quadri}} funzionano come il New Minor Forcing.&lt;br /&gt;
|note=Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata. Costi indicati dall&#039;autore: si perde la preferenza a 2{{fiori}} dopo 1{{fiori}}-1{{cuori}};1{{picche}}, si creano molte mani orfane, e dopo 1SA si perde il semplice ritiro a 2{{fiori}} (per esempio dopo 1{{fiori}}-1{{picche}};1SA e 1{{quadri}}-1{{picche}};1SA). Il range dell&#039;1SA di ridichiarazione non è indicato nella fonte: negli scenari si usa 12-14 PO come ipotesi di lavoro. Varianti sui check-back dopo 1SA citate dalla fonte: Second Round Stayman e Hi-Ro-Jerum. La preferenza dell&#039;autore (non usare check-back) è una sua opinione.&lt;br /&gt;
|tag_cc=response_xyz&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints=1D-1H;1S poi 2C puppet e passo dopo 2D (rispondente debole con 4 cuori e fit a quadri): pairhcp:18-26 opener D:4+ S:4 H:0-3 hcp:12-17; responder H:4+ D:3+ S:0-3 hcp:6-9; opp1 quiet; opp2 quiet // 1D-1H;1S 2C puppet poi invito a manche con colore naturale (10-11 PO): pairhcp:22-28 opener D:4+ S:4 H:0-3 hcp:12-17; responder S:4 H:5 hcp:10-11; opp1 quiet; opp2 quiet // 2D forzante a manche dopo 1C-1D;1H: pairhcp:24-32 opener C:3+ H:4 D:0-3 hcp:12-17; responder D:5+ H:3 hcp:12-15; opp1 quiet; opp2 quiet // 2H naturale scoraggiante dopo 1C-1H;1S: pairhcp:17-26 opener C:4+ S:4 H:0-2 hcp:12-17; responder H:6 S:3 hcp:5-9; opp1 quiet; opp2 quiet // 2S non rialzo forzante da slam dopo 1C-1D;1H: pairhcp:27-36 opener C:4+ H:4 hcp:12-17; responder S:5 D:6+ hcp:15-19; opp1 quiet; opp2 quiet // new minor forcing dopo 1C-1S;1SA con 2D (1SA 12-14 ipotesi): pairhcp:24-29 opener shape:balanced S:2-3 hcp:12-14; responder S:5 hcp:12-15; opp1 quiet; opp2 quiet // costo dopo 1D-1S;1SA perso il ritiro a 2C naturale (1SA 12-14 ipotesi): pairhcp:18-23 opener shape:balanced hcp:12-14; responder S:4 C:5+ hcp:6-9; opp1 quiet; opp2 quiet // quadri lunghe e 2D artificiale forzante dopo 1C-1D;1S: pairhcp:25-34 opener C:3+ S:4 hcp:12-17; responder D:6+ S:0-3 hcp:13-17; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore;responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=XYZ: dopo 1m-1x;1y (tre colori a livello 1) e dopo 1SA dell&#039;apertore, 2♣ = puppet verso 2♦, 2♦ = artificiale forzante a manche&lt;br /&gt;
|cc_text_response_xyz=XYZ: 2♣ puppet verso 2♦ (debole: passo; invito: colore naturale dopo 2♦), 2♦ artificiale GF; 2♥ naturale scoraggiante&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;XYZ&#039;&#039;&#039; è una convenzione di sviluppo del rispondente che, secondo l&#039;articolo di Danny Kleinman su Bridgebum.com, è attribuita a Joe Kivel. Si applica a dieci sequenze senza interventi e rende artificiali e forzanti le ridichiarazioni a 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Dominio ==&lt;br /&gt;
Le sequenze interessate (avversari sempre passati, apertura da mano non passata) sono dieci.&lt;br /&gt;
* Quattro sequenze &amp;quot;a tre colori&amp;quot; tutte a livello 1: 1{{fiori}} 1{{quadri}} 1{{cuori}}; 1{{fiori}} 1{{quadri}} 1{{picche}}; 1{{fiori}} 1{{cuori}} 1{{picche}}; 1{{quadri}} 1{{cuori}} 1{{picche}}.&lt;br /&gt;
* Sei sequenze con 1SA dell&#039;apertore: 1{{fiori}} 1{{quadri}}, 1{{fiori}} 1{{cuori}}, 1{{fiori}} 1{{picche}}, 1{{quadri}} 1{{cuori}}, 1{{quadri}} 1{{picche}}, 1{{cuori}} 1{{picche}}, in ogni caso seguite da 1SA.&lt;br /&gt;
&lt;br /&gt;
== Come si gioca senza XYZ ==&lt;br /&gt;
Per capire che cosa si sostituisce, l&#039;articolo descrive prima il metodo naturale. Nelle sequenze a tre colori le ridichiarazioni a Senza del rispondente sono naturali (1SA circa 6-10 PO, 2SA 11-12, 3SA 13-17); i rialzi del nobile dell&#039;apertore e la ripetizione del proprio nobile hanno range analoghi. Il quarto colore (forzante e spesso artificiale) serve a mantenere la dichiarazione aperta con mani forti. Nel naturale i salti a livello 3 nel quarto colore sono semplicemente invitanti.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente con XYZ ==&lt;br /&gt;
=== 2{{fiori}}: il puppet ===&lt;br /&gt;
Il 2{{fiori}} somiglia a un transfer, ma non mostra quadri: l&#039;apertore deve dire 2{{quadri}} qualunque mano abbia, senza super-accettazioni a 3{{quadri}} né preferenze a salto. Il 2{{fiori}} è artificiale e forzante (da spiegare agli avversari).&lt;br /&gt;
* Con mano debole il rispondente passa il 2{{quadri}} obbligato.&lt;br /&gt;
* Con mano d&#039;invito a manche dichiara al giro successivo un colore naturale; se la dichiarazione non è a salto è un invito (da spiegare). Rispetto al metodo standard resta un livello di dichiarazione in più per un eventuale tentativo dell&#039;apertore.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}}: artificiale e forzante a manche ===&lt;br /&gt;
Il 2{{quadri}} è artificiale e forzante a manche; dopo di esso si torna alla dichiarazione naturale. Lascia spazio all&#039;apertore, per esempio, per dichiarare 2SA e quindi giocare i Senza dalla mano giusta.&lt;br /&gt;
&lt;br /&gt;
=== 2{{cuori}} e 2{{picche}} ===&lt;br /&gt;
2{{cuori}} è naturale e scoraggiante, come nel metodo standard. 2{{picche}} è naturale e scoraggiante quando è un rialzo; se non è un rialzo, e per tutte le dichiarazioni più alte, la mano è forzante e da slam.&lt;br /&gt;
&lt;br /&gt;
== Dopo 1SA dell&#039;apertore ==&lt;br /&gt;
Nelle sei sequenze con 1SA la XYZ funziona come il New Minor Forcing: le ridichiarazioni 2{{fiori}} e 2{{quadri}} diventano artificiali. Per la descrizione dettagliata dei check-back si rimanda alla fonte.&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
Secondo la fonte la XYZ distingue a basso costo le mani d&#039;invito a manche da quelle più forti, sia nelle sequenze a tre colori sia in quelle con 1SA dell&#039;apertore. L&#039;autore la definisce un po&#039; più semplice dei metodi naturali che sostituisce.&lt;br /&gt;
&lt;br /&gt;
== Costi ==&lt;br /&gt;
Secondo la fonte:&lt;br /&gt;
* si perde la preferenza a 2{{fiori}} dopo 1{{fiori}} 1{{cuori}}; 1{{picche}} (non si può dichiarare 2{{fiori}} con una mano come &amp;lt;hand&amp;gt;K6.K1098.653.Q976&amp;lt;/hand&amp;gt;);&lt;br /&gt;
* si creano molte &amp;quot;mani orfane&amp;quot;, cioè mani che avevano una dichiarazione naturale ora sottratta;&lt;br /&gt;
* dopo 1SA dell&#039;apertore si perde il semplice ritiro a 2{{fiori}} dopo 1{{fiori}} 1{{picche}}; 1SA (per esempio con &amp;lt;hand&amp;gt;KQ98.J76.42.Q972&amp;lt;/hand&amp;gt;) e a 2{{fiori}} dopo 1{{quadri}} 1{{picche}}; 1SA o 1{{quadri}} 1{{cuori}}; 1SA;&lt;br /&gt;
* si perde l&#039;opzione di chiedere una preferenza al proprio nobile dopo 1{{fiori}} 1{{cuori}} 1SA (con una 5-5 cuori-quadri e simili);&lt;br /&gt;
* il danno è un po&#039; maggiore che con il solo NMF o con un check-back a 2{{fiori}}, perché diventano orfane due dichiarazioni naturali, 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
=== Puppet e passo ===&lt;br /&gt;
Rispondente debole con fit a quadri. Sud apre di 1{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AQ73.82.KJ752.A4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;K6.QJ98.Q1094.986&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il 2{{fiori}} di Nord è un puppet (non mostra quadri), Sud dice 2{{quadri}} obbligato e Nord passa.&lt;br /&gt;
&lt;br /&gt;
=== Puppet e invito a manche ===&lt;br /&gt;
Nord ha 10 PO e una mano d&#039;invito: dopo il puppet dichiara il colore in modo naturale, non a salto.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ74.K4.AQ752.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ85.A10952.93.K4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P 2S P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la mano massima Sud accetta l&#039;invito a 2{{picche}} e arriva a manche.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}} forzante a manche ===&lt;br /&gt;
Nord ha 13 PO e quadri quinte: il 2{{quadri}} è artificiale e forzante a manche, lascia a Sud lo spazio per 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q65.AK82.84.K1087&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A8.QJ4.QJ1042.K104&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2D P 2NT P 3NT P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2{{picche}} non rialzo (forzante, da slam) ===&lt;br /&gt;
Nord ha un bicolore forte picche-quadri. Dopo 1{{fiori}} 1{{quadri}} 1{{cuori}} il 2{{picche}} non è un rialzo e quindi è forzante con interesse di slam.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K4.AJ73.83.KQ962&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;AKQ85.6.KQJ1042.7&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2S P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non propone varianti della XYZ in senso stretto: cita invece, come alternative ai check-back dopo 1SA dell&#039;apertore, il &#039;&#039;&#039;Second Round Stayman&#039;&#039;&#039; (2{{fiori}} chiede prima un nobile quarto non dichiarato, poi tre carte nel nobile del rispondente; il solo orfano è un 2{{fiori}} naturale) e il &#039;&#039;Hi-Ro-Jerum&#039;&#039;, che incorpora la &amp;quot;Spade Inversion&amp;quot;. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Opinione dell&#039;autore ==&lt;br /&gt;
Kleinman osserva che la XYZ e i check-back dopo 1SA possono essere utili in alcune smazzate, ma che fanno più male che bene per via delle mani orfane che creano. Poiché preferisce rialzare liberamente le risposte di 1{{cuori}} e 1{{picche}}, dichiara di non averli mai usati. È una sua scelta personale, non una regola.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Walsh]] — Nella lezione 05 del &#039;&#039;Corso Preagonistica 2026&#039;&#039; di Marina Causa la prosecuzione dopo la Walsh è chiamata &amp;quot;XY&amp;quot; ed è analoga nello schema (2{{fiori}} puppet verso 2{{quadri}}, 2{{quadri}} relé forzante a manche, 2SA transfer a 3{{fiori}}). Le due convenzioni hanno uno schema affine ma non sono la stessa: la XYZ è definita dall&#039;articolo di Bridgebum sulle dieci sequenze sopra indicate.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Danny Kleinman, &amp;quot;XYZ&amp;quot;, Bridgebum.com, © Jeff Tang, https://www.bridgebum.com/xyz.php (ideazione attribuita a Joe Kivel secondo l&#039;articolo). Sintesi e riscrittura in italiano; gli esempi sono rielaborati.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=XYZ&amp;diff=2014</id>
		<title>XYZ</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=XYZ&amp;diff=2014"/>
		<updated>2026-11-03T06:10:59Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Correzione etichetta&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:XYZ}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=XYZ&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Dopo certe sequenze di apertura e risposta a livello 1 con ridichiarazione dell&#039;apertore, rendere artificiali e forzanti le ridichiarazioni 2{{fiori}} e 2{{quadri}} del rispondente, così da distinguere a basso livello le mani d&#039;invito da quelle più forti. Secondo l&#039;articolo di Danny Kleinman l&#039;ideazione è attribuita a Joe Kivel.&lt;br /&gt;
|trigger=Dieci sequenze senza interventi iniziate da una mano non passata. Quattro &amp;quot;a tre colori&amp;quot; a livello 1: 1{{fiori}}-1{{quadri}};1{{cuori}}, 1{{fiori}}-1{{quadri}};1{{picche}}, 1{{fiori}}-1{{cuori}};1{{picche}}, 1{{quadri}}-1{{cuori}};1{{picche}}. Sei con apertura, risposta e 1SA dell&#039;apertore: 1{{fiori}}-1{{quadri}}, 1{{fiori}}-1{{cuori}}, 1{{fiori}}-1{{picche}}, 1{{quadri}}-1{{cuori}}, 1{{quadri}}-1{{picche}}, 1{{cuori}}-1{{picche}}, tutte seguite da 1SA.&lt;br /&gt;
|risposte=Nelle quattro sequenze a tre colori: 2{{fiori}} del rispondente = &amp;quot;puppet&amp;quot; verso 2{{quadri}}: non mostra quadri, è artificiale e forzante e l&#039;apertore deve dire 2{{quadri}} con qualunque mano (niente super-accettazioni a 3{{quadri}} né preferenze a salto). Il rispondente può passare 2{{quadri}} con mano debole, oppure dichiarare un colore naturale al giro successivo con mano d&#039;invito (se non è a salto è un invito, da spiegare agli avversari). 2{{quadri}} del rispondente = artificiale e forzante a manche, poi si torna al naturale. 2{{cuori}} è naturale e scoraggiante; 2{{picche}} è naturale e scoraggiante solo se è un rialzo, mentre 2{{picche}} non rialzo e le dichiarazioni più alte sono forzanti e da slam. Dopo 1SA dell&#039;apertore (sei sequenze) 2{{fiori}} e 2{{quadri}} funzionano come il New Minor Forcing.&lt;br /&gt;
|note=Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata. Costi indicati dall&#039;autore: si perde la preferenza a 2{{fiori}} dopo 1{{fiori}}-1{{cuori}};1{{picche}}, si creano molte mani orfane, e dopo 1SA si perde il semplice ritiro a 2{{fiori}} (per esempio dopo 1{{fiori}}-1{{picche}};1SA e 1{{quadri}}-1{{picche}};1SA). Il range dell&#039;1SA di ridichiarazione non è indicato nella fonte: negli scenari si usa 12-14 PO come ipotesi di lavoro. Varianti sui check-back dopo 1SA citate dalla fonte: Second Round Stayman e Hi-Ro-Jerum. La preferenza dell&#039;autore (non usare check-back) è una sua opinione.&lt;br /&gt;
|tag_cc=response_xyz&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints=1D-1H;1S poi 2C puppet e passo dopo 2D (rispondente debole con 4 cuori e fit a quadri): pairhcp:18-26 opener D:4+ S:4 H:0-3 hcp:12-17; responder H:4+ D:3+ S:0-3 hcp:6-9; opp1 quiet; opp2 quiet // 1D-1H;1S 2C puppet poi invito a manche con colore naturale (10-11 PO): pairhcp:22-28 opener D:4+ S:4 H:0-3 hcp:12-17; responder S:4 H:5 hcp:10-11; opp1 quiet; opp2 quiet // 2D forzante a manche dopo 1C-1D;1H: pairhcp:24-32 opener C:3+ H:4 D:0-3 hcp:12-17; responder D:5+ H:3 hcp:12-15; opp1 quiet; opp2 quiet // 2H naturale scoraggiante dopo 1C-1H;1S: pairhcp:17-26 opener C:4+ S:4 H:0-2 hcp:12-17; responder H:6 S:3 hcp:5-9; opp1 quiet; opp2 quiet // 2S non rialzo forzante da slam dopo 1C-1D;1H: pairhcp:27-36 opener C:4+ H:4 hcp:12-17; responder S:5 D:6+ hcp:15-19; opp1 quiet; opp2 quiet // new minor forcing dopo 1C-1S;1SA con 2D (1SA 12-14 ipotesi): pairhcp:24-29 opener shape:balanced S:2-3 hcp:12-14; responder S:5 hcp:12-15; opp1 quiet; opp2 quiet // costo: dopo 1D-1S;1SA perso il ritiro a 2C naturale, 2C artificiale (1SA 12-14 ipotesi): pairhcp:18-23 opener shape:balanced hcp:12-14; responder S:4 C:5+ hcp:6-9; opp1 quiet; opp2 quiet // quadri lunghe e 2D artificiale forzante dopo 1C-1D;1S: pairhcp:25-34 opener C:3+ S:4 hcp:12-17; responder D:6+ S:0-3 hcp:13-17; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore;responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=XYZ: dopo 1m-1x;1y (tre colori a livello 1) e dopo 1SA dell&#039;apertore, 2♣ = puppet verso 2♦, 2♦ = artificiale forzante a manche&lt;br /&gt;
|cc_text_response_xyz=XYZ: 2♣ puppet verso 2♦ (debole: passo; invito: colore naturale dopo 2♦), 2♦ artificiale GF; 2♥ naturale scoraggiante&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;XYZ&#039;&#039;&#039; è una convenzione di sviluppo del rispondente che, secondo l&#039;articolo di Danny Kleinman su Bridgebum.com, è attribuita a Joe Kivel. Si applica a dieci sequenze senza interventi e rende artificiali e forzanti le ridichiarazioni a 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Dominio ==&lt;br /&gt;
Le sequenze interessate (avversari sempre passati, apertura da mano non passata) sono dieci.&lt;br /&gt;
* Quattro sequenze &amp;quot;a tre colori&amp;quot; tutte a livello 1: 1{{fiori}} 1{{quadri}} 1{{cuori}}; 1{{fiori}} 1{{quadri}} 1{{picche}}; 1{{fiori}} 1{{cuori}} 1{{picche}}; 1{{quadri}} 1{{cuori}} 1{{picche}}.&lt;br /&gt;
* Sei sequenze con 1SA dell&#039;apertore: 1{{fiori}} 1{{quadri}}, 1{{fiori}} 1{{cuori}}, 1{{fiori}} 1{{picche}}, 1{{quadri}} 1{{cuori}}, 1{{quadri}} 1{{picche}}, 1{{cuori}} 1{{picche}}, in ogni caso seguite da 1SA.&lt;br /&gt;
&lt;br /&gt;
== Come si gioca senza XYZ ==&lt;br /&gt;
Per capire che cosa si sostituisce, l&#039;articolo descrive prima il metodo naturale. Nelle sequenze a tre colori le ridichiarazioni a Senza del rispondente sono naturali (1SA circa 6-10 PO, 2SA 11-12, 3SA 13-17); i rialzi del nobile dell&#039;apertore e la ripetizione del proprio nobile hanno range analoghi. Il quarto colore (forzante e spesso artificiale) serve a mantenere la dichiarazione aperta con mani forti. Nel naturale i salti a livello 3 nel quarto colore sono semplicemente invitanti.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente con XYZ ==&lt;br /&gt;
=== 2{{fiori}}: il puppet ===&lt;br /&gt;
Il 2{{fiori}} somiglia a un transfer, ma non mostra quadri: l&#039;apertore deve dire 2{{quadri}} qualunque mano abbia, senza super-accettazioni a 3{{quadri}} né preferenze a salto. Il 2{{fiori}} è artificiale e forzante (da spiegare agli avversari).&lt;br /&gt;
* Con mano debole il rispondente passa il 2{{quadri}} obbligato.&lt;br /&gt;
* Con mano d&#039;invito a manche dichiara al giro successivo un colore naturale; se la dichiarazione non è a salto è un invito (da spiegare). Rispetto al metodo standard resta un livello di dichiarazione in più per un eventuale tentativo dell&#039;apertore.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}}: artificiale e forzante a manche ===&lt;br /&gt;
Il 2{{quadri}} è artificiale e forzante a manche; dopo di esso si torna alla dichiarazione naturale. Lascia spazio all&#039;apertore, per esempio, per dichiarare 2SA e quindi giocare i Senza dalla mano giusta.&lt;br /&gt;
&lt;br /&gt;
=== 2{{cuori}} e 2{{picche}} ===&lt;br /&gt;
2{{cuori}} è naturale e scoraggiante, come nel metodo standard. 2{{picche}} è naturale e scoraggiante quando è un rialzo; se non è un rialzo, e per tutte le dichiarazioni più alte, la mano è forzante e da slam.&lt;br /&gt;
&lt;br /&gt;
== Dopo 1SA dell&#039;apertore ==&lt;br /&gt;
Nelle sei sequenze con 1SA la XYZ funziona come il New Minor Forcing: le ridichiarazioni 2{{fiori}} e 2{{quadri}} diventano artificiali. Per la descrizione dettagliata dei check-back si rimanda alla fonte.&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
Secondo la fonte la XYZ distingue a basso costo le mani d&#039;invito a manche da quelle più forti, sia nelle sequenze a tre colori sia in quelle con 1SA dell&#039;apertore. L&#039;autore la definisce un po&#039; più semplice dei metodi naturali che sostituisce.&lt;br /&gt;
&lt;br /&gt;
== Costi ==&lt;br /&gt;
Secondo la fonte:&lt;br /&gt;
* si perde la preferenza a 2{{fiori}} dopo 1{{fiori}} 1{{cuori}}; 1{{picche}} (non si può dichiarare 2{{fiori}} con una mano come &amp;lt;hand&amp;gt;K6.K1098.653.Q976&amp;lt;/hand&amp;gt;);&lt;br /&gt;
* si creano molte &amp;quot;mani orfane&amp;quot;, cioè mani che avevano una dichiarazione naturale ora sottratta;&lt;br /&gt;
* dopo 1SA dell&#039;apertore si perde il semplice ritiro a 2{{fiori}} dopo 1{{fiori}} 1{{picche}}; 1SA (per esempio con &amp;lt;hand&amp;gt;KQ98.J76.42.Q972&amp;lt;/hand&amp;gt;) e a 2{{fiori}} dopo 1{{quadri}} 1{{picche}}; 1SA o 1{{quadri}} 1{{cuori}}; 1SA;&lt;br /&gt;
* si perde l&#039;opzione di chiedere una preferenza al proprio nobile dopo 1{{fiori}} 1{{cuori}} 1SA (con una 5-5 cuori-quadri e simili);&lt;br /&gt;
* il danno è un po&#039; maggiore che con il solo NMF o con un check-back a 2{{fiori}}, perché diventano orfane due dichiarazioni naturali, 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
=== Puppet e passo ===&lt;br /&gt;
Rispondente debole con fit a quadri. Sud apre di 1{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AQ73.82.KJ752.A4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;K6.QJ98.Q1094.986&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il 2{{fiori}} di Nord è un puppet (non mostra quadri), Sud dice 2{{quadri}} obbligato e Nord passa.&lt;br /&gt;
&lt;br /&gt;
=== Puppet e invito a manche ===&lt;br /&gt;
Nord ha 10 PO e una mano d&#039;invito: dopo il puppet dichiara il colore in modo naturale, non a salto.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ74.K4.AQ752.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ85.A10952.93.K4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P 2S P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la mano massima Sud accetta l&#039;invito a 2{{picche}} e arriva a manche.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}} forzante a manche ===&lt;br /&gt;
Nord ha 13 PO e quadri quinte: il 2{{quadri}} è artificiale e forzante a manche, lascia a Sud lo spazio per 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q65.AK82.84.K1087&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A8.QJ4.QJ1042.K104&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2D P 2NT P 3NT P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2{{picche}} non rialzo (forzante, da slam) ===&lt;br /&gt;
Nord ha un bicolore forte picche-quadri. Dopo 1{{fiori}} 1{{quadri}} 1{{cuori}} il 2{{picche}} non è un rialzo e quindi è forzante con interesse di slam.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K4.AJ73.83.KQ962&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;AKQ85.6.KQJ1042.7&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2S P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non propone varianti della XYZ in senso stretto: cita invece, come alternative ai check-back dopo 1SA dell&#039;apertore, il &#039;&#039;&#039;Second Round Stayman&#039;&#039;&#039; (2{{fiori}} chiede prima un nobile quarto non dichiarato, poi tre carte nel nobile del rispondente; il solo orfano è un 2{{fiori}} naturale) e il &#039;&#039;Hi-Ro-Jerum&#039;&#039;, che incorpora la &amp;quot;Spade Inversion&amp;quot;. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Opinione dell&#039;autore ==&lt;br /&gt;
Kleinman osserva che la XYZ e i check-back dopo 1SA possono essere utili in alcune smazzate, ma che fanno più male che bene per via delle mani orfane che creano. Poiché preferisce rialzare liberamente le risposte di 1{{cuori}} e 1{{picche}}, dichiara di non averli mai usati. È una sua scelta personale, non una regola.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Walsh]] — Nella lezione 05 del &#039;&#039;Corso Preagonistica 2026&#039;&#039; di Marina Causa la prosecuzione dopo la Walsh è chiamata &amp;quot;XY&amp;quot; ed è analoga nello schema (2{{fiori}} puppet verso 2{{quadri}}, 2{{quadri}} relé forzante a manche, 2SA transfer a 3{{fiori}}). Le due convenzioni hanno uno schema affine ma non sono la stessa: la XYZ è definita dall&#039;articolo di Bridgebum sulle dieci sequenze sopra indicate.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Danny Kleinman, &amp;quot;XYZ&amp;quot;, Bridgebum.com, © Jeff Tang, https://www.bridgebum.com/xyz.php (ideazione attribuita a Joe Kivel secondo l&#039;articolo). Sintesi e riscrittura in italiano; gli esempi sono rielaborati.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=XYZ&amp;diff=2013</id>
		<title>XYZ</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=XYZ&amp;diff=2013"/>
		<updated>2026-11-03T06:10:51Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Correzioni etichette scenari e testo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:XYZ}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=XYZ&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Dopo certe sequenze di apertura e risposta a livello 1 con ridichiarazione dell&#039;apertore, rendere artificiali e forzanti le ridichiarazioni 2{{fiori}} e 2{{quadri}} del rispondente, così da distinguere a basso livello le mani d&#039;invito da quelle più forti. Secondo l&#039;articolo di Danny Kleinman l&#039;ideazione è attribuita a Joe Kivel.&lt;br /&gt;
|trigger=Dieci sequenze senza interventi iniziate da una mano non passata. Quattro &amp;quot;a tre colori&amp;quot; a livello 1: 1{{fiori}}-1{{quadri}};1{{cuori}}, 1{{fiori}}-1{{quadri}};1{{picche}}, 1{{fiori}}-1{{cuori}};1{{picche}}, 1{{quadri}}-1{{cuori}};1{{picche}}. Sei con apertura, risposta e 1SA dell&#039;apertore: 1{{fiori}}-1{{quadri}}, 1{{fiori}}-1{{cuori}}, 1{{fiori}}-1{{picche}}, 1{{quadri}}-1{{cuori}}, 1{{quadri}}-1{{picche}}, 1{{cuori}}-1{{picche}}, tutte seguite da 1SA.&lt;br /&gt;
|risposte=Nelle quattro sequenze a tre colori: 2{{fiori}} del rispondente = &amp;quot;puppet&amp;quot; verso 2{{quadri}}: non mostra quadri, è artificiale e forzante e l&#039;apertore deve dire 2{{quadri}} con qualunque mano (niente super-accettazioni a 3{{quadri}} né preferenze a salto). Il rispondente può passare 2{{quadri}} con mano debole, oppure dichiarare un colore naturale al giro successivo con mano d&#039;invito (se non è a salto è un invito, da spiegare agli avversari). 2{{quadri}} del rispondente = artificiale e forzante a manche, poi si torna al naturale. 2{{cuori}} è naturale e scoraggiante; 2{{picche}} è naturale e scoraggiante solo se è un rialzo, mentre 2{{picche}} non rialzo e le dichiarazioni più alte sono forzanti e da slam. Dopo 1SA dell&#039;apertore (sei sequenze) 2{{fiori}} e 2{{quadri}} funzionano come il New Minor Forcing.&lt;br /&gt;
|note=Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata. Costi indicati dall&#039;autore: si perde la preferenza a 2{{fiori}} dopo 1{{fiori}}-1{{cuori}};1{{picche}}, si creano molte mani orfane, e dopo 1SA si perde il semplice ritiro a 2{{fiori}} (per esempio dopo 1{{fiori}}-1{{picche}};1SA e 1{{quadri}}-1{{picche}};1SA). Il range dell&#039;1SA di ridichiarazione non è indicato nella fonte: negli scenari si usa 12-14 PO come ipotesi di lavoro. Varianti sui check-back dopo 1SA citate dalla fonte: Second Round Stayman e Hi-Ro-Jerum. La preferenza dell&#039;autore (non usare check-back) è una sua opinione.&lt;br /&gt;
|tag_cc=response_xyz&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints=1D-1H;1S poi 2C puppet e passo dopo 2Q (rispondente debole con 4 cuori e fit a quadri): pairhcp:18-26 opener D:4+ S:4 H:0-3 hcp:12-17; responder H:4+ D:3+ S:0-3 hcp:6-9; opp1 quiet; opp2 quiet // 1D-1H;1S 2C puppet poi invito a manche con colore naturale (10-11 PO): pairhcp:22-28 opener D:4+ S:4 H:0-3 hcp:12-17; responder S:4 H:5 hcp:10-11; opp1 quiet; opp2 quiet // 2D forzante a manche dopo 1C-1D;1H: pairhcp:24-32 opener C:3+ H:4 D:0-3 hcp:12-17; responder D:5+ H:3 hcp:12-15; opp1 quiet; opp2 quiet // 2H naturale scoraggiante dopo 1C-1H;1S: pairhcp:17-26 opener C:4+ S:4 H:0-2 hcp:12-17; responder H:6 S:3 hcp:5-9; opp1 quiet; opp2 quiet // 2S non rialzo forzante da slam dopo 1C-1D;1H: pairhcp:27-36 opener C:4+ H:4 hcp:12-17; responder S:5 D:6+ hcp:15-19; opp1 quiet; opp2 quiet // new minor forcing dopo 1C-1S;1SA con 2D (1SA 12-14 ipotesi): pairhcp:24-29 opener shape:balanced S:2-3 hcp:12-14; responder S:5 hcp:12-15; opp1 quiet; opp2 quiet // costo: dopo 1D-1S;1SA perso il ritiro a 2C naturale, 2C artificiale (1SA 12-14 ipotesi): pairhcp:18-23 opener shape:balanced hcp:12-14; responder S:4 C:5+ hcp:6-9; opp1 quiet; opp2 quiet // quadri lunghe e 2D artificiale forzante dopo 1C-1D;1S: pairhcp:25-34 opener C:3+ S:4 hcp:12-17; responder D:6+ S:0-3 hcp:13-17; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore;responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=XYZ: dopo 1m-1x;1y (tre colori a livello 1) e dopo 1SA dell&#039;apertore, 2♣ = puppet verso 2♦, 2♦ = artificiale forzante a manche&lt;br /&gt;
|cc_text_response_xyz=XYZ: 2♣ puppet verso 2♦ (debole: passo; invito: colore naturale dopo 2♦), 2♦ artificiale GF; 2♥ naturale scoraggiante&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;XYZ&#039;&#039;&#039; è una convenzione di sviluppo del rispondente che, secondo l&#039;articolo di Danny Kleinman su Bridgebum.com, è attribuita a Joe Kivel. Si applica a dieci sequenze senza interventi e rende artificiali e forzanti le ridichiarazioni a 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Dominio ==&lt;br /&gt;
Le sequenze interessate (avversari sempre passati, apertura da mano non passata) sono dieci.&lt;br /&gt;
* Quattro sequenze &amp;quot;a tre colori&amp;quot; tutte a livello 1: 1{{fiori}} 1{{quadri}} 1{{cuori}}; 1{{fiori}} 1{{quadri}} 1{{picche}}; 1{{fiori}} 1{{cuori}} 1{{picche}}; 1{{quadri}} 1{{cuori}} 1{{picche}}.&lt;br /&gt;
* Sei sequenze con 1SA dell&#039;apertore: 1{{fiori}} 1{{quadri}}, 1{{fiori}} 1{{cuori}}, 1{{fiori}} 1{{picche}}, 1{{quadri}} 1{{cuori}}, 1{{quadri}} 1{{picche}}, 1{{cuori}} 1{{picche}}, in ogni caso seguite da 1SA.&lt;br /&gt;
&lt;br /&gt;
== Come si gioca senza XYZ ==&lt;br /&gt;
Per capire che cosa si sostituisce, l&#039;articolo descrive prima il metodo naturale. Nelle sequenze a tre colori le ridichiarazioni a Senza del rispondente sono naturali (1SA circa 6-10 PO, 2SA 11-12, 3SA 13-17); i rialzi del nobile dell&#039;apertore e la ripetizione del proprio nobile hanno range analoghi. Il quarto colore (forzante e spesso artificiale) serve a mantenere la dichiarazione aperta con mani forti. Nel naturale i salti a livello 3 nel quarto colore sono semplicemente invitanti.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente con XYZ ==&lt;br /&gt;
=== 2{{fiori}}: il puppet ===&lt;br /&gt;
Il 2{{fiori}} somiglia a un transfer, ma non mostra quadri: l&#039;apertore deve dire 2{{quadri}} qualunque mano abbia, senza super-accettazioni a 3{{quadri}} né preferenze a salto. Il 2{{fiori}} è artificiale e forzante (da spiegare agli avversari).&lt;br /&gt;
* Con mano debole il rispondente passa il 2{{quadri}} obbligato.&lt;br /&gt;
* Con mano d&#039;invito a manche dichiara al giro successivo un colore naturale; se la dichiarazione non è a salto è un invito (da spiegare). Rispetto al metodo standard resta un livello di dichiarazione in più per un eventuale tentativo dell&#039;apertore.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}}: artificiale e forzante a manche ===&lt;br /&gt;
Il 2{{quadri}} è artificiale e forzante a manche; dopo di esso si torna alla dichiarazione naturale. Lascia spazio all&#039;apertore, per esempio, per dichiarare 2SA e quindi giocare i Senza dalla mano giusta.&lt;br /&gt;
&lt;br /&gt;
=== 2{{cuori}} e 2{{picche}} ===&lt;br /&gt;
2{{cuori}} è naturale e scoraggiante, come nel metodo standard. 2{{picche}} è naturale e scoraggiante quando è un rialzo; se non è un rialzo, e per tutte le dichiarazioni più alte, la mano è forzante e da slam.&lt;br /&gt;
&lt;br /&gt;
== Dopo 1SA dell&#039;apertore ==&lt;br /&gt;
Nelle sei sequenze con 1SA la XYZ funziona come il New Minor Forcing: le ridichiarazioni 2{{fiori}} e 2{{quadri}} diventano artificiali. Per la descrizione dettagliata dei check-back si rimanda alla fonte.&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
Secondo la fonte la XYZ distingue a basso costo le mani d&#039;invito a manche da quelle più forti, sia nelle sequenze a tre colori sia in quelle con 1SA dell&#039;apertore. L&#039;autore la definisce un po&#039; più semplice dei metodi naturali che sostituisce.&lt;br /&gt;
&lt;br /&gt;
== Costi ==&lt;br /&gt;
Secondo la fonte:&lt;br /&gt;
* si perde la preferenza a 2{{fiori}} dopo 1{{fiori}} 1{{cuori}}; 1{{picche}} (non si può dichiarare 2{{fiori}} con una mano come &amp;lt;hand&amp;gt;K6.K1098.653.Q976&amp;lt;/hand&amp;gt;);&lt;br /&gt;
* si creano molte &amp;quot;mani orfane&amp;quot;, cioè mani che avevano una dichiarazione naturale ora sottratta;&lt;br /&gt;
* dopo 1SA dell&#039;apertore si perde il semplice ritiro a 2{{fiori}} dopo 1{{fiori}} 1{{picche}}; 1SA (per esempio con &amp;lt;hand&amp;gt;KQ98.J76.42.Q972&amp;lt;/hand&amp;gt;) e a 2{{fiori}} dopo 1{{quadri}} 1{{picche}}; 1SA o 1{{quadri}} 1{{cuori}}; 1SA;&lt;br /&gt;
* si perde l&#039;opzione di chiedere una preferenza al proprio nobile dopo 1{{fiori}} 1{{cuori}} 1SA (con una 5-5 cuori-quadri e simili);&lt;br /&gt;
* il danno è un po&#039; maggiore che con il solo NMF o con un check-back a 2{{fiori}}, perché diventano orfane due dichiarazioni naturali, 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
=== Puppet e passo ===&lt;br /&gt;
Rispondente debole con fit a quadri. Sud apre di 1{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AQ73.82.KJ752.A4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;K6.QJ98.Q1094.986&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il 2{{fiori}} di Nord è un puppet (non mostra quadri), Sud dice 2{{quadri}} obbligato e Nord passa.&lt;br /&gt;
&lt;br /&gt;
=== Puppet e invito a manche ===&lt;br /&gt;
Nord ha 10 PO e una mano d&#039;invito: dopo il puppet dichiara il colore in modo naturale, non a salto.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ74.K4.AQ752.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ85.A10952.93.K4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P 2S P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la mano massima Sud accetta l&#039;invito a 2{{picche}} e arriva a manche.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}} forzante a manche ===&lt;br /&gt;
Nord ha 13 PO e quadri quinte: il 2{{quadri}} è artificiale e forzante a manche, lascia a Sud lo spazio per 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q65.AK82.84.K1087&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A8.QJ4.QJ1042.K104&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2D P 2NT P 3NT P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2{{picche}} non rialzo (forzante, da slam) ===&lt;br /&gt;
Nord ha un bicolore forte picche-quadri. Dopo 1{{fiori}} 1{{quadri}} 1{{cuori}} il 2{{picche}} non è un rialzo e quindi è forzante con interesse di slam.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K4.AJ73.83.KQ962&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;AKQ85.6.KQJ1042.7&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2S P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non propone varianti della XYZ in senso stretto: cita invece, come alternative ai check-back dopo 1SA dell&#039;apertore, il &#039;&#039;&#039;Second Round Stayman&#039;&#039;&#039; (2{{fiori}} chiede prima un nobile quarto non dichiarato, poi tre carte nel nobile del rispondente; il solo orfano è un 2{{fiori}} naturale) e il &#039;&#039;Hi-Ro-Jerum&#039;&#039;, che incorpora la &amp;quot;Spade Inversion&amp;quot;. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Opinione dell&#039;autore ==&lt;br /&gt;
Kleinman osserva che la XYZ e i check-back dopo 1SA possono essere utili in alcune smazzate, ma che fanno più male che bene per via delle mani orfane che creano. Poiché preferisce rialzare liberamente le risposte di 1{{cuori}} e 1{{picche}}, dichiara di non averli mai usati. È una sua scelta personale, non una regola.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Walsh]] — Nella lezione 05 del &#039;&#039;Corso Preagonistica 2026&#039;&#039; di Marina Causa la prosecuzione dopo la Walsh è chiamata &amp;quot;XY&amp;quot; ed è analoga nello schema (2{{fiori}} puppet verso 2{{quadri}}, 2{{quadri}} relé forzante a manche, 2SA transfer a 3{{fiori}}). Le due convenzioni hanno uno schema affine ma non sono la stessa: la XYZ è definita dall&#039;articolo di Bridgebum sulle dieci sequenze sopra indicate.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Danny Kleinman, &amp;quot;XYZ&amp;quot;, Bridgebum.com, © Jeff Tang, https://www.bridgebum.com/xyz.php (ideazione attribuita a Joe Kivel secondo l&#039;articolo). Sintesi e riscrittura in italiano; gli esempi sono rielaborati.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=XYZ&amp;diff=2012</id>
		<title>XYZ</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=XYZ&amp;diff=2012"/>
		<updated>2026-11-03T06:10:38Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Nuova pagina XYZ (sintesi da Bridgebum, Kleinman)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:XYZ}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=XYZ&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Dopo certe sequenze di apertura e risposta a livello 1 con ridichiarazione dell&#039;apertore, rendere artificiali e forzanti le ridichiarazioni 2{{fiori}} e 2{{quadri}} del rispondente, così da distinguere a basso livello le mani d&#039;invito da quelle più forti. Secondo l&#039;articolo di Danny Kleinman l&#039;ideazione è attribuita a Joe Kivel.&lt;br /&gt;
|trigger=Dieci sequenze senza interventi iniziate da una mano non passata. Quattro &amp;quot;a tre colori&amp;quot; a livello 1: 1{{fiori}}-1{{quadri}};1{{cuori}}, 1{{fiori}}-1{{quadri}};1{{picche}}, 1{{fiori}}-1{{cuori}};1{{picche}}, 1{{quadri}}-1{{cuori}};1{{picche}}. Sei con apertura, risposta e 1SA dell&#039;apertore: 1{{fiori}}-1{{quadri}}, 1{{fiori}}-1{{cuori}}, 1{{fiori}}-1{{picche}}, 1{{quadri}}-1{{cuori}}, 1{{quadri}}-1{{picche}}, 1{{cuori}}-1{{picche}}, tutte seguite da 1SA.&lt;br /&gt;
|risposte=Nelle quattro sequenze a tre colori: 2{{fiori}} del rispondente = &amp;quot;puppet&amp;quot; verso 2{{quadri}}: non mostra quadri, è artificiale e forzante e l&#039;apertore deve dire 2{{quadri}} con qualunque mano (niente super-accettazioni a 3{{quadri}} né preferenze a salto). Il rispondente può passare 2{{quadri}} con mano debole, oppure dichiarare un colore naturale al giro successivo con mano d&#039;invito (se non è a salto è un invito, da spiegare agli avversari). 2{{quadri}} del rispondente = artificiale e forzante a manche, poi si torna al naturale. 2{{cuori}} è naturale e scoraggiante; 2{{picche}} è naturale e scoraggiante solo se è un rialzo, mentre 2{{picche}} non rialzo e le dichiarazioni più alte sono forzanti e da slam. Dopo 1SA dell&#039;apertore (sei sequenze) 2{{fiori}} e 2{{quadri}} funzionano come il New Minor Forcing.&lt;br /&gt;
|note=Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata. Costi indicati dall&#039;autore: si perde la preferenza a 2{{fiori}} dopo 1{{fiori}}-1{{cuori}};1{{picche}}, si creano molte mani orfane, e dopo 1SA si perde il semplice ritiro a 2{{fiori}} (per esempio dopo 1{{fiori}}-1{{picche}};1SA e 1{{quadri}}-1{{picche}};1SA). Il range dell&#039;1SA di ridichiarazione non è indicato nella fonte: negli scenari si usa 12-14 PO come ipotesi di lavoro. Varianti sui check-back dopo 1SA citate dalla fonte: Second Round Stayman e Hi-Ro-Jerum. La preferenza dell&#039;autore (non usare check-back) è una sua opinione.&lt;br /&gt;
|tag_cc=response_xyz&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints=1 1Q-1C;1P poi 2F puppet e passo dopo 2Q (rispondente debole con 4 cuori e fit a quadri): pairhcp:18-26 opener D:4+ S:4 H:0-3 hcp:12-17; responder H:4+ D:3+ S:0-3 hcp:6-9; opp1 quiet; opp2 quiet // 2 2F puppet poi invito a manche con colore naturale dopo 1Q-1C;1P: pairhcp:22-28 opener D:4+ S:4 H:0-3 hcp:12-17; responder S:4 H:5 hcp:10-11; opp1 quiet; opp2 quiet // 3 2Q forzante a manche dopo 1F-1Q;1C: pairhcp:24-32 opener C:3+ H:4 D:0-3 hcp:12-17; responder D:5+ H:3 hcp:12-15; opp1 quiet; opp2 quiet // 4 2C naturale scoraggiante dopo 1F-1C;1P: pairhcp:17-26 opener C:4+ S:4 H:0-2 hcp:12-17; responder H:6 S:3 hcp:5-9; opp1 quiet; opp2 quiet // 5 2P non rialzo forzante da slam dopo 1F-1Q;1C: pairhcp:27-36 opener C:4+ H:4 hcp:12-17; responder S:5 D:6+ hcp:15-19; opp1 quiet; opp2 quiet // 6 new minor forcing dopo 1F-1P;1SA con 2Q (1SA 12-14 ipotesi): pairhcp:24-29 opener shape:balanced S:2-3 hcp:12-14; responder S:5 hcp:12-15; opp1 quiet; opp2 quiet // 7 costo dopo 1Q-1P;1SA, perso il ritiro a 2F naturale (1SA 12-14 ipotesi): pairhcp:18-23 opener shape:balanced hcp:12-14; responder S:4 C:5+ hcp:6-9; opp1 quiet; opp2 quiet // 8 quadri lunghe e 2Q artificiale forzante dopo 1F-1Q;1P: pairhcp:25-34 opener C:3+ S:4 hcp:12-17; responder D:6+ S:0-3 hcp:13-17; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore;responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=XYZ: dopo 1m-1x;1y (tre colori a livello 1) e dopo 1SA dell&#039;apertore, 2♣ = puppet verso 2♦, 2♦ = artificiale forzante a manche&lt;br /&gt;
|cc_text_response_xyz=XYZ: 2♣ puppet verso 2♦ (debole: passo; invito: colore naturale dopo 2♦), 2♦ artificiale GF; 2♥ naturale scoraggiante&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Sintesi in italiano da fonte web (Bridgebum, Danny Kleinman): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;XYZ&#039;&#039;&#039; è una convenzione di sviluppo del rispondente che, secondo l&#039;articolo di Danny Kleinman su Bridgebum.com, è attribuita a Joe Kivel. Si applica a dieci sequenze senza interventi e rende artificiali e forzanti le ridichiarazioni a 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Dominio ==&lt;br /&gt;
Le sequenze interessate (avversari sempre passati, apertura da mano non passata) sono dieci.&lt;br /&gt;
* Quattro sequenze &amp;quot;a tre colori&amp;quot; tutte a livello 1: 1{{fiori}} 1{{quadri}} 1{{cuori}}; 1{{fiori}} 1{{quadri}} 1{{picche}}; 1{{fiori}} 1{{cuori}} 1{{picche}}; 1{{quadri}} 1{{cuori}} 1{{picche}}.&lt;br /&gt;
* Sei sequenze con 1SA dell&#039;apertore: 1{{fiori}} 1{{quadri}}, 1{{fiori}} 1{{cuori}}, 1{{fiori}} 1{{picche}}, 1{{quadri}} 1{{cuori}}, 1{{quadri}} 1{{picche}}, 1{{cuori}} 1{{picche}}, in ogni caso seguite da 1SA.&lt;br /&gt;
&lt;br /&gt;
== Come si gioca senza XYZ ==&lt;br /&gt;
Per capire che cosa si sostituisce, l&#039;articolo descrive prima il metodo naturale. Nelle sequenze a tre colori le ridichiarazioni a Senza del rispondente sono naturali (1SA circa 6-10 PO, 2SA 11-12, 3SA 13-17); i rialzi del nobile dell&#039;apertore e la ripetizione del proprio nobile hanno range analoghi. Il quarto colore (forzante e spesso artificiale) serve a mantenere la dichiarazione aperta con mani forti. Nel naturale i salti a livello 3 nel quarto colore sono semplicemente invitanti.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente con XYZ ==&lt;br /&gt;
=== 2{{fiori}}: il puppet ===&lt;br /&gt;
Il 2{{fiori}} somiglia a un transfer, ma non mostra quadri: l&#039;apertore deve dire 2{{quadri}} qualunque mano abbia, senza super-accettazioni a 3{{quadri}} né preferenze a salto. Il 2{{fiori}} è artificiale e forzante (da spiegare agli avversari).&lt;br /&gt;
* Con mano debole il rispondente passa il 2{{quadri}} obbligato.&lt;br /&gt;
* Con mano d&#039;invito a manche dichiara al giro successivo un colore naturale; se la dichiarazione non è a salto è un invito (da spiegare). Rispetto al metodo standard resta un livello di dichiarazione in più per un eventuale tentativo dell&#039;apertore.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}}: artificiale e forzante a manche ===&lt;br /&gt;
Il 2{{quadri}} è artificiale e forzante a manche; dopo di esso si torna alla dichiarazione naturale. Lascia spazio all&#039;apertore, per esempio, per dichiarare 2SA e quindi giocare i Senza dalla mano giusta.&lt;br /&gt;
&lt;br /&gt;
=== 2{{cuori}} e 2{{picche}} ===&lt;br /&gt;
2{{cuori}} è naturale e scoraggiante, come nel metodo standard. 2{{picche}} è naturale e scoraggiante quando è un rialzo; se non è un rialzo, e per tutte le dichiarazioni più alte, la mano è forzante e da slam.&lt;br /&gt;
&lt;br /&gt;
== Dopo 1SA dell&#039;apertore ==&lt;br /&gt;
Nelle sei sequenze con 1SA la XYZ funziona come il New Minor Forcing: le ridichiarazioni 2{{fiori}} e 2{{quadri}} diventano artificiali. Per la descrizione dettagliata dei check-back si rimanda alla fonte.&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
Secondo la fonte la XYZ distingue a basso costo le mani d&#039;invito a manche da quelle più forti, sia nelle sequenze a tre colori sia in quelle con 1SA dell&#039;apertore. L&#039;autore la definisce un po&#039; più semplice dei metodi naturali che sostituisce.&lt;br /&gt;
&lt;br /&gt;
== Costi ==&lt;br /&gt;
Secondo la fonte:&lt;br /&gt;
* si perde la preferenza a 2{{fiori}} dopo 1{{fiori}} 1{{cuori}}; 1{{picche}} (non si può dichiarare 2{{fiori}} con una mano come &amp;lt;hand&amp;gt;K6.K1098.653.Q976&amp;lt;/hand&amp;gt;);&lt;br /&gt;
* si creano molte &amp;quot;mani orfane&amp;quot;, cioè mani che avevano una dichiarazione naturale ora sottratta;&lt;br /&gt;
* dopo 1SA dell&#039;apertore si perde il semplice ritiro a 2{{fiori}} dopo 1{{fiori}} 1{{picche}}; 1SA (per esempio con &amp;lt;hand&amp;gt;KQ98.J76.42.Q972&amp;lt;/hand&amp;gt;) e a 2{{fiori}} dopo 1{{quadri}} 1{{picche}}; 1SA o 1{{quadri}} 1{{cuori}}; 1SA;&lt;br /&gt;
* si perde l&#039;opzione di chiedere una preferenza al proprio nobile dopo 1{{fiori}} 1{{cuori}} 1SA (con 5-5 nei nobili e simili);&lt;br /&gt;
* il danno è un po&#039; maggiore che con il solo NMF o con un check-back a 2{{fiori}}, perché diventano orfane due dichiarazioni naturali, 2{{fiori}} e 2{{quadri}}.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
=== Puppet e passo ===&lt;br /&gt;
Rispondente debole con fit a quadri. Sud apre di 1{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AQ73.82.KJ752.A4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;K6.QJ98.Q1094.986&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il 2{{fiori}} di Nord è un puppet (non mostra quadri), Sud dice 2{{quadri}} obbligato e Nord passa.&lt;br /&gt;
&lt;br /&gt;
=== Puppet e invito a manche ===&lt;br /&gt;
Nord ha 10 PO e una mano d&#039;invito: dopo il puppet dichiara il colore in modo naturale, non a salto.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ74.K4.AQ752.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ85.A10952.93.K4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 2D P 2S P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con la mano massima Sud accetta l&#039;invito a 2{{picche}} e arriva a manche.&lt;br /&gt;
&lt;br /&gt;
=== 2{{quadri}} forzante a manche ===&lt;br /&gt;
Nord ha 13 PO e quadri quinte: il 2{{quadri}} è artificiale e forzante a manche, lascia a Sud lo spazio per 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q65.AK82.84.K1087&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A8.QJ4.QJ1042.K104&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2D P 2NT P 3NT P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2{{picche}} non rialzo (forzante, da slam) ===&lt;br /&gt;
Nord ha un bicolore forte picche-quadri. Dopo 1{{fiori}} 1{{quadri}} 1{{cuori}} il 2{{picche}} non è un rialzo e quindi è forzante con interesse di slam.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K4.AJ73.83.KQ962&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;AKQ85.6.KQJ1042.7&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2S P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non propone varianti della XYZ in senso stretto: cita invece, come alternative ai check-back dopo 1SA dell&#039;apertore, il &#039;&#039;&#039;Second Round Stayman&#039;&#039;&#039; (2{{fiori}} chiede prima un nobile quarto non dichiarato, poi tre carte nel nobile del rispondente; il solo orfano è un 2{{fiori}} naturale) e l&#039;&#039;&#039;Hi-Ro-Jerum&#039;&#039;, che incorpora la &amp;quot;Spade Inversion&amp;quot;. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Opinione dell&#039;autore ==&lt;br /&gt;
Kleinman osserva che la XYZ e i check-back dopo 1SA possono essere utili in alcune smazzate, ma che fanno più male che bene per via delle mani orfane che creano. Poiché preferisce rialzare liberamente le risposte di 1{{cuori}} e 1{{picche}}, dichiara di non averli mai usati. È una sua scelta personale, non una regola.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Walsh]] — Nella lezione 05 del &#039;&#039;Corso Preagonistica 2026&#039;&#039; di Marina Causa la prosecuzione dopo la Walsh è chiamata &amp;quot;XY&amp;quot; ed è analoga nello schema (2{{fiori}} puppet verso 2{{quadri}}, 2{{quadri}} relé forzante a manche, 2SA transfer a 3{{fiori}}). Le due convenzioni hanno uno schema affine ma non sono la stessa: la XYZ è definita dall&#039;articolo di Bridgebum sulle dieci sequenze sopra indicate.&lt;br /&gt;
* [[Due su uno Game Forcing]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Danny Kleinman, &amp;quot;XYZ&amp;quot;, Bridgebum.com, © Jeff Tang, https://www.bridgebum.com/xyz.php (ideazione attribuita a Joe Kivel secondo l&#039;articolo). Sintesi e riscrittura in italiano; gli esempi sono rielaborati.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Walsh&amp;diff=2011</id>
		<title>Walsh</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Walsh&amp;diff=2011"/>
		<updated>2026-11-03T05:44:24Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Walsh: correzione etichette scenari&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Walsh}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
[[Categoria:Risposte a 1 fiori]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Walsh&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Su apertura di 1{{fiori}}, anticipare il maggiore a discapito delle quadri (anche se più lunghe) con tutte le mani da 4 a 11 punti, per mettere in pista un nobile scavalcando le quadri (utile nella competizione) e per nascondere all&#039;attacco le eventuali quarte nobili dell&#039;apertore bilanciato.&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} del compagno. Il rispondente con 4+ carte in un nobile e 4-11 punti onori risponde direttamente 1{{cuori}} o 1{{picche}}, saltando le quadri. Con mano da manche (FM, 12+ PO) si segue la sequenza naturale: 1{{quadri}} (solo se quinte o più), poi il nobile.&lt;br /&gt;
|risposte=Da 4 a 11 PO con un nobile: 1{{cuori}}/1{{picche}} diretto, anche con quadri più lunghe. Mano FM (12+): 1{{quadri}} (solo con quadri quinte o più) e poi il nobile; con quadri solo quarte si risponde comunque 1{{cuori}}. Dopo 1{{fiori}} 1{{quadri}}, se l&#039;apertore ridichiara un colore a livello 1 mostra una mano sbilanciata (fiori lunghi o tricolore); se ridichiara 1SA, dopo 1{{fiori}} 1{{quadri}} 1SA la ridichiarazione 2{{cuori}} del rispondente garantisce i cuori. Prosecuzione XY (dopo 1{{fiori}}-1{{quadri}}-1 e simili): 2{{fiori}} = transfer per 2{{quadri}} (parziale a quadri o tutte le mani di invito); 2{{quadri}} = relé forzante manche; 2SA = transfer per 3{{fiori}} (parziale a fiori o mani 5/5 di 15+ con almeno due onori maggiori in entrambi i colori).&lt;br /&gt;
|note=Contenuto trascritto da slide: revisione da parte di un esperto consigliata. Il range dell&#039;1SA di ridichiarazione dell&#039;apertore non è indicato nella fonte. Con l&#039;XY: la ripetizione del nobile di risposta è da passare; la dichiarazione di 2{{cuori}} dopo risposta 1{{picche}} non è forzante (max 9/10); tutte le dichiarazioni a livello tre, tradizionalmente invitanti e quindi passabili, diventano forzanti manche (perché tutti gli inviti passano dal 2{{fiori}}).&lt;br /&gt;
|tag_cc=response_walsh&lt;br /&gt;
|tag_sistema=naturale,quinta_nobile&lt;br /&gt;
|shape_constraints=1H su 1C con 4 cuori e 4-11 PO, saltando le quadri: pairhcp:16-28 opener hcp:12-17; responder H:4+ hcp:4-11; opp1 quiet; opp2 quiet // 1H con quadri più lunghe (quadri saltate): pairhcp:16-28 opener hcp:12-17; responder H:4 D:5+ hcp:4-11; opp1 quiet; opp2 quiet // 1S su 1C con 4 picche e 4-11 PO, saltando le quadri: pairhcp:16-28 opener hcp:12-17; responder S:4+ hcp:4-11; opp1 quiet; opp2 quiet // 1S con quadri più lunghe (quadri saltate): pairhcp:16-28 opener hcp:12-17; responder S:4 D:5+ hcp:4-11; opp1 quiet; opp2 quiet // FM con quadri 5+ e cuori quarti 1D poi cuori: pairhcp:24-33 opener hcp:12-17; responder D:5+ H:4 hcp:12-16; opp1 quiet; opp2 quiet // FM con quadri 5+ e picche quarte 1D poi picche: pairhcp:24-33 opener hcp:12-17; responder D:5+ S:4 hcp:12-16; opp1 quiet; opp2 quiet // apertore bilanciato che ridichiara 1SA dopo 1D (range 1SA non indicato nella fonte): pairhcp:18-28 opener shape:balanced hcp:12-14; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // apertore sbilanciato con fiori lunghi che ridichiara a livello 1 dopo 1D: pairhcp:18-28 opener C:6+ S:4 hcp:12-17; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // apertore tricolore che ridichiara a livello 1 dopo 1D: pairhcp:18-28 opener shape:three_suiter S:4 hcp:12-17; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // transfer 2C per parziale a quadri dopo 1S 1SA: pairhcp:16-24 opener shape:balanced hcp:12-14; responder S:4 D:5 hcp:5-9; opp1 quiet; opp2 quiet // transfer 2C per invito a manche con 5 cuori dopo 1H 1SA: pairhcp:22-26 opener shape:balanced hcp:12-14; responder H:5 hcp:10-11; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore (1{{fiori}});responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=Walsh: su 1♣ si risponde 1♥/1♠ con 4+ nobili e 4-11 PO (salta le quadri); con 12+ 1♦ (quinte+) poi il nobile&lt;br /&gt;
|cc_text_response_walsh=Walsh: su 1♣ nobile diretto con 4-11 PO anche saltando le quadri; 12+ PO 1♦ poi nobile; 1♦ poi XY (2♣ transfer a 2♦, 2♦ relé FM, 2SA transfer a 3♣)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Contenuto trascritto da slide (Marina Causa, Corso Preagonistica 2026): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;Walsh&#039;&#039;&#039; è un accordo per cui, &#039;&#039;&#039;su apertura di 1{{fiori}}&#039;&#039;&#039;, si &#039;&#039;&#039;anticipa il maggiore a discapito delle quadri&#039;&#039;&#039; (anche se più lunghe) &#039;&#039;&#039;con tutte le mani da 4 a 11 punti&#039;&#039;&#039;. Se invece la mano è da manche (FM) si segue la sequenza naturale: quadri (solo se quinte o più), poi il nobile.&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
* Su 1{{fiori}}, con 4+ carte nobili e 4-11 PO: si risponde direttamente &#039;&#039;&#039;1{{cuori}}&#039;&#039;&#039; o &#039;&#039;&#039;1{{picche}}&#039;&#039;&#039;, saltando le quadri, anche se le quadri sono più lunghe.&lt;br /&gt;
* Con mano da manche (FM, 12+): sequenza naturale, &#039;&#039;&#039;1{{quadri}}&#039;&#039;&#039; (solo se quinte o più) e poi il nobile.&lt;br /&gt;
&lt;br /&gt;
=== Esempi della fonte (apertura 1{{fiori}} del compagno) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Mano !! Risposta !! Nota&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;J84.A984.Q982.J7&amp;lt;/hand&amp;gt; || 1{{cuori}} || 4-11 PO: nobile diretto&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;K74.Q984.A9862.7&amp;lt;/hand&amp;gt; || 1{{cuori}} || quadri più lunghe, ma si anticipa il nobile&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;J4.AQ84.K982.KQ7&amp;lt;/hand&amp;gt; || 1{{cuori}} || mano FM, ma le quadri sono solo quarte&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;K74.AQ84.AKJ82.7&amp;lt;/hand&amp;gt; || 1{{quadri}} || mano FM: poi si dichiarano le cuori&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
=== 1) Un nobile in pista scavalcando le quadri ===&lt;br /&gt;
Mette in pista un nobile scavalcando le quadri (cosa che di solito l&#039;apertore non ha quando apre 1{{fiori}}): dal punto di vista della strategia di competizione è una scelta vincente (la fonte aggiunge: persino se il compagno non sa che si sta giocando Walsh da soli).&lt;br /&gt;
&lt;br /&gt;
Esempio della fonte (Sud apre):&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q63.A1065.KQ4.Q98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;52.KQ74.A10962.63&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H 1S 2H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord-Sud si sono potuti assestare velocemente su un parziale di 8 atout. Secondo la fonte, forse E/O potevano insistere a picche, forse avevano un ottimo fit a fiori; di certo, se Nord avesse risposto 1{{quadri}}, su 1{{picche}} Sud sarebbe passato e a bocce ferme per E/O sarebbe stato più facile appropriarsi del parziale.&lt;br /&gt;
&lt;br /&gt;
=== 2) L&#039;apertore bilanciato nasconde le quarte nobili ===&lt;br /&gt;
Se l&#039;apertore è bilanciato di diritto e la risposta è 1{{quadri}} in prima istanza, si comporta come se il compagno non avesse quarte nobili e dichiara comunque 1SA. Con questa replica può nascondere una quarta nobile, o anche tutte e due; se resta il contratto finale, l&#039;attaccante sarà completamente alla cieca.&lt;br /&gt;
&lt;br /&gt;
Esempio della fonte: dopo 1{{fiori}} 1{{quadri}} 1SA 3SA l&#039;attaccante ha &#039;&#039;mano completata&#039;&#039; (la slide dà picche J10xx, cuori KJxx, quadri Jx, fiori Qxx):&lt;br /&gt;
&amp;lt;hand&amp;gt;J1085.KJ73.J2.Q64&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sa che il morto scenderà senza quarte nobili, ma il vivo potrebbe averle entrambe, o solo una, o nessuna: non sa praticamente niente della mano del giocante.&lt;br /&gt;
&lt;br /&gt;
Smazzata della fonte (Sud apre):&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ63.AJ65.Q4.Q95&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;852.104.KJ62.KJ63&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nessun rischio di perdere una manche nobile ===&lt;br /&gt;
La fonte nota che non c&#039;è pericolo di perdere una manche nel nobile: se il rispondente ha almeno 12 punti dichiara 1{{quadri}} all&#039;inizio e poi prosegue dichiarando il nobile, svelando la forza oltre alla bicolore almeno 5/4.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ63.AJ65.Q4.Q95&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;Q2.K1084.KJ962.A3&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2H P 3H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord si accontenta della manche perché ha 13 e sa di fronteggiare una bilanciata di diritto; con la stessa mano e visuale di slam potrebbe, su 3{{cuori}}, iniziare a dare i controlli. Il seguito (una volta chiarito che il rispondente ha 12+ con quadri lunghe e la quarta nobile che annuncia) è tutto naturale:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K9.AJ94.Q72.Q1096&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;Q1043.K8.AJ953.K5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2S P 2SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conseguenze sulle ridichiarazioni ==&lt;br /&gt;
* &#039;&#039;&#039;Apertore sbilanciato&#039;&#039;&#039;: quando, sulla risposta di 1{{quadri}}, l&#039;apertore ridichiara un colore a livello 1, mostra automaticamente una mano sbilanciata, e quindi fiori lunghi o tricolore. Esempio della fonte (&#039;&#039;mano completata&#039;&#039;, la slide dà AKxx, x, Axx, Qxxxx): &amp;lt;hand&amp;gt;AK63.4.A52.Q9873&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;2{{cuori}} del rispondente dopo 1SA&#039;&#039;&#039;: in un sistema standard la ridichiarazione di 2{{cuori}} mostrerebbe valori nel colore e non necessariamente quattro carte; giocando Walsh il colore di cuori è garantito, per il fatto che l&#039;apertore potrebbe avere fit nel seme. Nord si presenterà quindi con carte tipo (slide: KJx, AJxx, KQxxx, x; &#039;&#039;mano completata&#039;&#039;): &amp;lt;hand&amp;gt;KJ4.AJ73.KQ982.6&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
* La sequenza 1{{fiori}} 1{{quadri}} 1SA 2{{cuori}} va considerata &#039;&#039;&#039;forzante di manche&#039;&#039;&#039; perché, adottando anche la convenzione XY, ci sarà modo di raccontare le carte di Nord quando si trova con una 4/6 invitante.&lt;br /&gt;
&lt;br /&gt;
=== Nota sulle sequenze con 2{{quadri}} dell&#039;apertore ===&lt;br /&gt;
La fonte avverte che giocare Walsh è abbastanza facile e rilassante, purché si faccia l&#039;orecchio ad alcune sequenze delicate; indica due situazioni a cui prestare attenzione. Per la prima mostra la sequenza 1{{fiori}} 1{{picche}} 2{{fiori}} 2{{quadri}} (&amp;quot;??&amp;quot; sulla slide) con la mano seguente (&#039;&#039;mano completata&#039;&#039;, la slide dà Ax, Kx, xxx, AQxxxx): &amp;lt;hand&amp;gt;A4.K5.763.AQ9842&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 2C P 2D P&amp;lt;/bidding&amp;gt; La fonte dice che questa, per nessun motivo, può essere considerata una sequenza Walsh; la ridichiarazione di 2{{quadri}} è indispensabile per indagare ancora. In queste situazioni il rispondente, se ha il corto-lungo Walsh, deve rassegnarsi e passare, sperando che l&#039;apertore abbia sei carte di fiori. (La slide descrive solo una delle due situazioni annunciate.)&lt;br /&gt;
&lt;br /&gt;
== Prosecuzione &amp;quot;XY&amp;quot; dopo 1{{fiori}}-1{{quadri}}-1... ==&lt;br /&gt;
Giocando XY non serve più il nuovo colore forzante (non nelle sequenze a livello 1), né il check back né altro. L&#039;idea: tutto ruota su tre possibili repliche del rispondente.&lt;br /&gt;
* &#039;&#039;&#039;2{{fiori}}&#039;&#039;&#039;: transfer per 2{{quadri}}. Con tutte le mani che vogliono giocare un parziale a quadri oppure tutte le mani con forza di invito, che si chiarirà dopo.&lt;br /&gt;
* &#039;&#039;&#039;2{{quadri}}&#039;&#039;&#039;: relé FM, con tutte le mani con cui il rispondente vuole interrogare.&lt;br /&gt;
* &#039;&#039;&#039;2SA&#039;&#039;&#039;: transfer per 3{{fiori}}. Con tutte le mani che vogliono giocare un parziale a fiori oppure tutte le mani 5/5 di 15+ con almeno due onori maggiori in entrambi i colori.&lt;br /&gt;
&lt;br /&gt;
Inoltre, qualcosa cambia:&lt;br /&gt;
* La ripetizione del nobile di risposta è da passare.&lt;br /&gt;
* La dichiarazione di 2{{cuori}} dopo risposta 1{{picche}} è non forzante (max 9/10).&lt;br /&gt;
* Tutte le dichiarazioni a livello tre, tradizionalmente invitanti e quindi passabili, usando l&#039;XY diventano FM (perché tutti gli inviti passano dal 2{{fiori}}).&lt;br /&gt;
&lt;br /&gt;
=== 2{{fiori}}, il transfer per gli inviti a manche o per le quadri ===&lt;br /&gt;
Con qualsiasi mano invitante il rispondente ridichiara 2{{fiori}} (e l&#039;apertore dovrà dire 2{{quadri}}). L&#039;apertore, con 11/16, dovrà rispettare il transfer. Dopodiché si aprono due possibilità.&lt;br /&gt;
&lt;br /&gt;
==== a) Intenzione di giocare un parziale a quadri ====&lt;br /&gt;
Secondo la fonte è più che possibile e, giocando Walsh, è un modo intelligente di recuperare una lunga ignorata al primo giro. Chissà, forse 1SA era un buon parziale e forse no, di certo 2{{quadri}} non dovrebbe essere una brutta scelta: se sfortunati si troveranno 2 carte, altrimenti 3.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q2.A82.J54.AJ976&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;KJ104.43.KQ952.103&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 1SA P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo &amp;quot;stop&amp;quot; a 2{{quadri}} non è automatico: poiché l&#039;apertore ha ridichiarato a colore 1 su 1, potrebbe ancora avere una mano che sfiora il rever. Nel timore che Nord si volesse fermare a un parziale a quadri (sempre possibile: se ora arrivasse il 3{{quadri}} Sud si rassegnerebbe) Sud disobbedisce, descrivendosi ancora: la pennellata a 3{{fiori}} descrive proprio queste carte, e questa forza onori. Esempio della fonte, nella forma riportata dalla slide (apertura 1{{quadri}}; &#039;&#039;mano completata&#039;&#039;, la slide dà KQJ7, 4, AK854, A92):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQJ7.4.AK854.A92&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 3C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La disobbedienza deve presentare ottimi motivi, anche se la mano non è particolarmente forte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;K10.AQ87.4.KQJ972&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2C P 3C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se Nord ha una mano invitante a manche farà le sue deduzioni: questo 3{{fiori}} dice &amp;quot;sono certo che questo parziale sia meglio, se era nelle tue intenzioni proporre di giocare 2{{quadri}}: io avrei detto 2{{quadri}} e tu Passo... ma ti prevengo con una sesta solidissima e un punteggio non minimo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== b) Invito a manche ====&lt;br /&gt;
Se ha intenzione di formulare un invito a manche (quindi la forza onori sarà intorno ai 10/11 punti), invece di passare il rispondente formulerà, a livello di estrema sicurezza, l&#039;invito che intende proporre.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito con 5 carte di cuori&#039;&#039;&#039; (&amp;quot;sono invitante a manche con 5 carte di cuori&amp;quot;): Sud giustamente declina, né si prende il mal di pancia, con 12, di correggere a 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AK52.102.K54.Q872&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;94.AQJ74.A93.643&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1S P 2C P 2D P 2H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se le carte di Nord fossero state &amp;lt;hand&amp;gt;94.AQ9854.A54.65&amp;lt;/hand&amp;gt; avrebbe detto 2{{fiori}} e poi 3{{cuori}}: invitante, ma questa volta con almeno 6 carte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito con fit a picche&#039;&#039;&#039; (&amp;quot;sono invitante a manche con fit a picche&amp;quot;): Sud è minimo e passa. La fonte nota come sia straordinario riuscire a formulare a livello due un invito che, in qualunque naturale, si dovrebbe spingere a livello 3; a volte si è già sotto, nonostante il fit di 8 carte e i 22/23 punti in linea.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;A1052.82.AJ54.K72&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;KQJ4.AJ74.93.643&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1S P 2C P 2D P 2S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito a 3SA&#039;&#039;&#039; (&amp;quot;sono invitante a 3SA&amp;quot;): rialza se sei massimo. Secondo la fonte nulla di speciale: anche nel naturale classico senza fronzoli Sud avrebbe detto 1SA, Nord avrebbe invitato con 2SA e il risultato sarebbe stato comunque 3SA. Attenzione: quando invita a Senza il rispondente nega di avere 5 carte nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K105.Q2.A109.KJ1072&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ84.KJ74.Q83.Q3&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1SA P 2C P 2D P 2SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito 5-4 (picche e cuori)&#039;&#039;&#039;: Nord risponde normalmente 1{{picche}}, poi trasferisce con il 2{{fiori}} e mostra infine una mano &amp;quot;invitante con 5 picche e 4 cuori&amp;quot;; Sud con 14 accetta e rialza a manche.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K5.QJ92.A105.A1092&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A9842.K1074.KJ.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 1SA P 2C P 2D P 2H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Secondo la fonte, se Nord avesse detto le cuori direttamente su 1SA avrebbe mostrato una mano limite, da 6 fino al punteggio da invito; se di cuori ne avesse dette 3, dopo essere passato dal transfer, avrebbe mostrato una 5-5 invitante. Occorre ricordarsi che il 2{{fiori}} prelude sempre a una mano non più che invitante, quindi al massimo 11.&lt;br /&gt;
&lt;br /&gt;
== Picche e poi cuori ==&lt;br /&gt;
La fonte osserva che la sequenza di risposta &amp;quot;picche e poi cuori&amp;quot; è sempre stata delicatissima nel naturale senza convenzioni: essendo un cambio di colore forzante, chiedeva all&#039;apertore di rialzare a 3 cuori tutte le volte che, anche con 12, preferiva il secondo colore. Questo creava al rispondente crisi di coscienza imbarazzanti (esempio della slide con apertura 1{{quadri}}: picche KJxxx, cuori AJxx, quadri xx, fiori xx, dopo 1{{quadri}} 1{{picche}} 1SA). Il fatto che, con l&#039;XY, la replica 2{{cuori}} sia passabile è un grande sollievo.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non indica varianti della convenzione. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Stayman]]&lt;br /&gt;
* [[Fiori forte]]&lt;br /&gt;
* [[Precision]]&lt;br /&gt;
* [[Landy]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, lezione 05 — La convenzione WALSH (slide).&lt;br /&gt;
* Nota: il contenuto è trascritto da slide; revisione da parte di un esperto consigliata. Gli esempi con &amp;quot;x&amp;quot; sulla slide sono indicati come &#039;&#039;mano completata&#039;&#039; con carte basse plausibili.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Walsh&amp;diff=2010</id>
		<title>Walsh</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Walsh&amp;diff=2010"/>
		<updated>2026-11-03T05:44:11Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Riscrittura completa da slide di Marina Causa (Corso Preagonistica 2026, lezione 05): schema corretto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Walsh}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
[[Categoria:Risposte a 1 fiori]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Walsh&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Su apertura di 1{{fiori}}, anticipare il maggiore a discapito delle quadri (anche se più lunghe) con tutte le mani da 4 a 11 punti, per mettere in pista un nobile scavalcando le quadri (utile nella competizione) e per nascondere all&#039;attacco le eventuali quarte nobili dell&#039;apertore bilanciato.&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} del compagno. Il rispondente con 4+ carte in un nobile e 4-11 punti onori risponde direttamente 1{{cuori}} o 1{{picche}}, saltando le quadri. Con mano da manche (FM, 12+ PO) si segue la sequenza naturale: 1{{quadri}} (solo se quinte o più), poi il nobile.&lt;br /&gt;
|risposte=Da 4 a 11 PO con un nobile: 1{{cuori}}/1{{picche}} diretto, anche con quadri più lunghe. Mano FM (12+): 1{{quadri}} (solo con quadri quinte o più) e poi il nobile; con quadri solo quarte si risponde comunque 1{{cuori}}. Dopo 1{{fiori}} 1{{quadri}}, se l&#039;apertore ridichiara un colore a livello 1 mostra una mano sbilanciata (fiori lunghi o tricolore); se ridichiara 1SA, dopo 1{{fiori}} 1{{quadri}} 1SA la ridichiarazione 2{{cuori}} del rispondente garantisce i cuori. Prosecuzione XY (dopo 1{{fiori}}-1{{quadri}}-1 e simili): 2{{fiori}} = transfer per 2{{quadri}} (parziale a quadri o tutte le mani di invito); 2{{quadri}} = relé forzante manche; 2SA = transfer per 3{{fiori}} (parziale a fiori o mani 5/5 di 15+ con almeno due onori maggiori in entrambi i colori).&lt;br /&gt;
|note=Contenuto trascritto da slide: revisione da parte di un esperto consigliata. Il range dell&#039;1SA di ridichiarazione dell&#039;apertore non è indicato nella fonte. Con l&#039;XY: la ripetizione del nobile di risposta è da passare; la dichiarazione di 2{{cuori}} dopo risposta 1{{picche}} non è forzante (max 9/10); tutte le dichiarazioni a livello tre, tradizionalmente invitanti e quindi passabili, diventano forzanti manche (perché tutti gli inviti passano dal 2{{fiori}}).&lt;br /&gt;
|tag_cc=response_walsh&lt;br /&gt;
|tag_sistema=naturale,quinta_nobile&lt;br /&gt;
|shape_constraints=1H su 1C con 4 cuori e 4-11 PO, saltando le quadri: pairhcp:16-28 opener hcp:12-17; responder H:4+ hcp:4-11; opp1 quiet; opp2 quiet // 1H con quadri più lunghe (quadri saltate): pairhcp:16-28 opener hcp:12-17; responder H:4 D:5+ hcp:4-11; opp1 quiet; opp2 quiet // 1S su 1C con 4 picche e 4-11 PO, saltando le quadri: pairhcp:16-28 opener hcp:12-17; responder S:4+ hcp:4-11; opp1 quiet; opp2 quiet // 1S con quadri più lunghe (quadri saltate): pairhcp:16-28 opener hcp:12-17; responder S:4 D:5+ hcp:4-11; opp1 quiet; opp2 quiet // FM con quadri 5+ e cuori quarti: 1D poi cuori: pairhcp:24-33 opener hcp:12-17; responder D:5+ H:4 hcp:12-16; opp1 quiet; opp2 quiet // FM con quadri 5+ e picche quarte: 1D poi picche: pairhcp:24-33 opener hcp:12-17; responder D:5+ S:4 hcp:12-16; opp1 quiet; opp2 quiet // apertore bilanciato che ridichiara 1SA dopo 1D (range 1SA non indicato nella fonte): pairhcp:18-28 opener shape:balanced hcp:12-14; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // apertore sbilanciato con fiori lunghi che ridichiara a livello 1 dopo 1D: pairhcp:18-28 opener C:6+ S:4 hcp:12-17; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // apertore tricolore che ridichiara a livello 1 dopo 1D: pairhcp:18-28 opener shape:three_suiter S:4 hcp:12-17; responder D:4+ H:0-3 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // transfer 2C per parziale a quadri dopo 1S 1SA: pairhcp:16-24 opener shape:balanced hcp:12-14; responder S:4 D:5 hcp:5-9; opp1 quiet; opp2 quiet // transfer 2C per invito a manche con 5 cuori dopo 1H 1SA: pairhcp:22-26 opener shape:balanced hcp:12-14; responder H:5 hcp:10-11; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore (1{{fiori}});responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=Walsh: su 1♣ si risponde 1♥/1♠ con 4+ nobili e 4-11 PO (salta le quadri); con 12+ 1♦ (quinte+) poi il nobile&lt;br /&gt;
|cc_text_response_walsh=Walsh: su 1♣ nobile diretto con 4-11 PO anche saltando le quadri; 12+ PO 1♦ poi nobile; 1♦ poi XY (2♣ transfer a 2♦, 2♦ relé FM, 2SA transfer a 3♣)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Contenuto trascritto da slide (Marina Causa, Corso Preagonistica 2026): revisione da parte di un esperto consigliata.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;Walsh&#039;&#039;&#039; è un accordo per cui, &#039;&#039;&#039;su apertura di 1{{fiori}}&#039;&#039;&#039;, si &#039;&#039;&#039;anticipa il maggiore a discapito delle quadri&#039;&#039;&#039; (anche se più lunghe) &#039;&#039;&#039;con tutte le mani da 4 a 11 punti&#039;&#039;&#039;. Se invece la mano è da manche (FM) si segue la sequenza naturale: quadri (solo se quinte o più), poi il nobile.&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
* Su 1{{fiori}}, con 4+ carte nobili e 4-11 PO: si risponde direttamente &#039;&#039;&#039;1{{cuori}}&#039;&#039;&#039; o &#039;&#039;&#039;1{{picche}}&#039;&#039;&#039;, saltando le quadri, anche se le quadri sono più lunghe.&lt;br /&gt;
* Con mano da manche (FM, 12+): sequenza naturale, &#039;&#039;&#039;1{{quadri}}&#039;&#039;&#039; (solo se quinte o più) e poi il nobile.&lt;br /&gt;
&lt;br /&gt;
=== Esempi della fonte (apertura 1{{fiori}} del compagno) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Mano !! Risposta !! Nota&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;J84.A984.Q982.J7&amp;lt;/hand&amp;gt; || 1{{cuori}} || 4-11 PO: nobile diretto&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;K74.Q984.A9862.7&amp;lt;/hand&amp;gt; || 1{{cuori}} || quadri più lunghe, ma si anticipa il nobile&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;J4.AQ84.K982.KQ7&amp;lt;/hand&amp;gt; || 1{{cuori}} || mano FM, ma le quadri sono solo quarte&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;hand&amp;gt;K74.AQ84.AKJ82.7&amp;lt;/hand&amp;gt; || 1{{quadri}} || mano FM: poi si dichiarano le cuori&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vantaggi ==&lt;br /&gt;
=== 1) Un nobile in pista scavalcando le quadri ===&lt;br /&gt;
Mette in pista un nobile scavalcando le quadri (cosa che di solito l&#039;apertore non ha quando apre 1{{fiori}}): dal punto di vista della strategia di competizione è una scelta vincente (la fonte aggiunge: persino se il compagno non sa che si sta giocando Walsh da soli).&lt;br /&gt;
&lt;br /&gt;
Esempio della fonte (Sud apre):&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q63.A1065.KQ4.Q98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;52.KQ74.A10962.63&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H 1S 2H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord-Sud si sono potuti assestare velocemente su un parziale di 8 atout. Secondo la fonte, forse E/O potevano insistere a picche, forse avevano un ottimo fit a fiori; di certo, se Nord avesse risposto 1{{quadri}}, su 1{{picche}} Sud sarebbe passato e a bocce ferme per E/O sarebbe stato più facile appropriarsi del parziale.&lt;br /&gt;
&lt;br /&gt;
=== 2) L&#039;apertore bilanciato nasconde le quarte nobili ===&lt;br /&gt;
Se l&#039;apertore è bilanciato di diritto e la risposta è 1{{quadri}} in prima istanza, si comporta come se il compagno non avesse quarte nobili e dichiara comunque 1SA. Con questa replica può nascondere una quarta nobile, o anche tutte e due; se resta il contratto finale, l&#039;attaccante sarà completamente alla cieca.&lt;br /&gt;
&lt;br /&gt;
Esempio della fonte: dopo 1{{fiori}} 1{{quadri}} 1SA 3SA l&#039;attaccante ha &#039;&#039;mano completata&#039;&#039; (la slide dà picche J10xx, cuori KJxx, quadri Jx, fiori Qxx):&lt;br /&gt;
&amp;lt;hand&amp;gt;J1085.KJ73.J2.Q64&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sa che il morto scenderà senza quarte nobili, ma il vivo potrebbe averle entrambe, o solo una, o nessuna: non sa praticamente niente della mano del giocante.&lt;br /&gt;
&lt;br /&gt;
Smazzata della fonte (Sud apre):&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ63.AJ65.Q4.Q95&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;852.104.KJ62.KJ63&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nessun rischio di perdere una manche nobile ===&lt;br /&gt;
La fonte nota che non c&#039;è pericolo di perdere una manche nel nobile: se il rispondente ha almeno 12 punti dichiara 1{{quadri}} all&#039;inizio e poi prosegue dichiarando il nobile, svelando la forza oltre alla bicolore almeno 5/4.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;KJ63.AJ65.Q4.Q95&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;Q2.K1084.KJ962.A3&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2H P 3H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord si accontenta della manche perché ha 13 e sa di fronteggiare una bilanciata di diritto; con la stessa mano e visuale di slam potrebbe, su 3{{cuori}}, iniziare a dare i controlli. Il seguito (una volta chiarito che il rispondente ha 12+ con quadri lunghe e la quarta nobile che annuncia) è tutto naturale:&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K9.AJ94.Q72.Q1096&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;Q1043.K8.AJ953.K5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2S P 2SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conseguenze sulle ridichiarazioni ==&lt;br /&gt;
* &#039;&#039;&#039;Apertore sbilanciato&#039;&#039;&#039;: quando, sulla risposta di 1{{quadri}}, l&#039;apertore ridichiara un colore a livello 1, mostra automaticamente una mano sbilanciata, e quindi fiori lunghi o tricolore. Esempio della fonte (&#039;&#039;mano completata&#039;&#039;, la slide dà AKxx, x, Axx, Qxxxx): &amp;lt;hand&amp;gt;AK63.4.A52.Q9873&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;2{{cuori}} del rispondente dopo 1SA&#039;&#039;&#039;: in un sistema standard la ridichiarazione di 2{{cuori}} mostrerebbe valori nel colore e non necessariamente quattro carte; giocando Walsh il colore di cuori è garantito, per il fatto che l&#039;apertore potrebbe avere fit nel seme. Nord si presenterà quindi con carte tipo (slide: KJx, AJxx, KQxxx, x; &#039;&#039;mano completata&#039;&#039;): &amp;lt;hand&amp;gt;KJ4.AJ73.KQ982.6&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1SA P 2H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
* La sequenza 1{{fiori}} 1{{quadri}} 1SA 2{{cuori}} va considerata &#039;&#039;&#039;forzante di manche&#039;&#039;&#039; perché, adottando anche la convenzione XY, ci sarà modo di raccontare le carte di Nord quando si trova con una 4/6 invitante.&lt;br /&gt;
&lt;br /&gt;
=== Nota sulle sequenze con 2{{quadri}} dell&#039;apertore ===&lt;br /&gt;
La fonte avverte che giocare Walsh è abbastanza facile e rilassante, purché si faccia l&#039;orecchio ad alcune sequenze delicate; indica due situazioni a cui prestare attenzione. Per la prima mostra la sequenza 1{{fiori}} 1{{picche}} 2{{fiori}} 2{{quadri}} (&amp;quot;??&amp;quot; sulla slide) con la mano seguente (&#039;&#039;mano completata&#039;&#039;, la slide dà Ax, Kx, xxx, AQxxxx): &amp;lt;hand&amp;gt;A4.K5.763.AQ9842&amp;lt;/hand&amp;gt; &amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 2C P 2D P&amp;lt;/bidding&amp;gt; La fonte dice che questa, per nessun motivo, può essere considerata una sequenza Walsh; la ridichiarazione di 2{{quadri}} è indispensabile per indagare ancora. In queste situazioni il rispondente, se ha il corto-lungo Walsh, deve rassegnarsi e passare, sperando che l&#039;apertore abbia sei carte di fiori. (La slide descrive solo una delle due situazioni annunciate.)&lt;br /&gt;
&lt;br /&gt;
== Prosecuzione &amp;quot;XY&amp;quot; dopo 1{{fiori}}-1{{quadri}}-1... ==&lt;br /&gt;
Giocando XY non serve più il nuovo colore forzante (non nelle sequenze a livello 1), né il check back né altro. L&#039;idea: tutto ruota su tre possibili repliche del rispondente.&lt;br /&gt;
* &#039;&#039;&#039;2{{fiori}}&#039;&#039;&#039;: transfer per 2{{quadri}}. Con tutte le mani che vogliono giocare un parziale a quadri oppure tutte le mani con forza di invito, che si chiarirà dopo.&lt;br /&gt;
* &#039;&#039;&#039;2{{quadri}}&#039;&#039;&#039;: relé FM, con tutte le mani con cui il rispondente vuole interrogare.&lt;br /&gt;
* &#039;&#039;&#039;2SA&#039;&#039;&#039;: transfer per 3{{fiori}}. Con tutte le mani che vogliono giocare un parziale a fiori oppure tutte le mani 5/5 di 15+ con almeno due onori maggiori in entrambi i colori.&lt;br /&gt;
&lt;br /&gt;
Inoltre, qualcosa cambia:&lt;br /&gt;
* La ripetizione del nobile di risposta è da passare.&lt;br /&gt;
* La dichiarazione di 2{{cuori}} dopo risposta 1{{picche}} è non forzante (max 9/10).&lt;br /&gt;
* Tutte le dichiarazioni a livello tre, tradizionalmente invitanti e quindi passabili, usando l&#039;XY diventano FM (perché tutti gli inviti passano dal 2{{fiori}}).&lt;br /&gt;
&lt;br /&gt;
=== 2{{fiori}}, il transfer per gli inviti a manche o per le quadri ===&lt;br /&gt;
Con qualsiasi mano invitante il rispondente ridichiara 2{{fiori}} (e l&#039;apertore dovrà dire 2{{quadri}}). L&#039;apertore, con 11/16, dovrà rispettare il transfer. Dopodiché si aprono due possibilità.&lt;br /&gt;
&lt;br /&gt;
==== a) Intenzione di giocare un parziale a quadri ====&lt;br /&gt;
Secondo la fonte è più che possibile e, giocando Walsh, è un modo intelligente di recuperare una lunga ignorata al primo giro. Chissà, forse 1SA era un buon parziale e forse no, di certo 2{{quadri}} non dovrebbe essere una brutta scelta: se sfortunati si troveranno 2 carte, altrimenti 3.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;Q2.A82.J54.AJ976&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;KJ104.43.KQ952.103&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 1SA P 2C P 2D P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo &amp;quot;stop&amp;quot; a 2{{quadri}} non è automatico: poiché l&#039;apertore ha ridichiarato a colore 1 su 1, potrebbe ancora avere una mano che sfiora il rever. Nel timore che Nord si volesse fermare a un parziale a quadri (sempre possibile: se ora arrivasse il 3{{quadri}} Sud si rassegnerebbe) Sud disobbedisce, descrivendosi ancora: la pennellata a 3{{fiori}} descrive proprio queste carte, e questa forza onori. Esempio della fonte, nella forma riportata dalla slide (apertura 1{{quadri}}; &#039;&#039;mano completata&#039;&#039;, la slide dà KQJ7, 4, AK854, A92):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQJ7.4.AK854.A92&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1D P 1H P 1S P 2C P 3C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La disobbedienza deve presentare ottimi motivi, anche se la mano non è particolarmente forte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;K10.AQ87.4.KQJ972&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1D P 1H P 2C P 3C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se Nord ha una mano invitante a manche farà le sue deduzioni: questo 3{{fiori}} dice &amp;quot;sono certo che questo parziale sia meglio, se era nelle tue intenzioni proporre di giocare 2{{quadri}}: io avrei detto 2{{quadri}} e tu Passo... ma ti prevengo con una sesta solidissima e un punteggio non minimo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== b) Invito a manche ====&lt;br /&gt;
Se ha intenzione di formulare un invito a manche (quindi la forza onori sarà intorno ai 10/11 punti), invece di passare il rispondente formulerà, a livello di estrema sicurezza, l&#039;invito che intende proporre.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito con 5 carte di cuori&#039;&#039;&#039; (&amp;quot;sono invitante a manche con 5 carte di cuori&amp;quot;): Sud giustamente declina, né si prende il mal di pancia, con 12, di correggere a 2SA.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;AK52.102.K54.Q872&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;94.AQJ74.A93.643&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1S P 2C P 2D P 2H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se le carte di Nord fossero state &amp;lt;hand&amp;gt;94.AQ9854.A54.65&amp;lt;/hand&amp;gt; avrebbe detto 2{{fiori}} e poi 3{{cuori}}: invitante, ma questa volta con almeno 6 carte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito con fit a picche&#039;&#039;&#039; (&amp;quot;sono invitante a manche con fit a picche&amp;quot;): Sud è minimo e passa. La fonte nota come sia straordinario riuscire a formulare a livello due un invito che, in qualunque naturale, si dovrebbe spingere a livello 3; a volte si è già sotto, nonostante il fit di 8 carte e i 22/23 punti in linea.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;A1052.82.AJ54.K72&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;KQJ4.AJ74.93.643&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1S P 2C P 2D P 2S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito a 3SA&#039;&#039;&#039; (&amp;quot;sono invitante a 3SA&amp;quot;): rialza se sei massimo. Secondo la fonte nulla di speciale: anche nel naturale classico senza fronzoli Sud avrebbe detto 1SA, Nord avrebbe invitato con 2SA e il risultato sarebbe stato comunque 3SA. Attenzione: quando invita a Senza il rispondente nega di avere 5 carte nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K105.Q2.A109.KJ1072&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;QJ84.KJ74.Q83.Q3&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1H P 1SA P 2C P 2D P 2SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invito 5-4 (picche e cuori)&#039;&#039;&#039;: Nord risponde normalmente 1{{picche}}, poi trasferisce con il 2{{fiori}} e mostra infine una mano &amp;quot;invitante con 5 picche e 4 cuori&amp;quot;; Sud con 14 accetta e rialza a manche.&lt;br /&gt;
&lt;br /&gt;
Sud: &amp;lt;hand&amp;gt;K5.QJ92.A105.A1092&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord: &amp;lt;hand&amp;gt;A9842.K1074.KJ.83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1C P 1S P 1SA P 2C P 2D P 2H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Secondo la fonte, se Nord avesse detto le cuori direttamente su 1SA avrebbe mostrato una mano limite, da 6 fino al punteggio da invito; se di cuori ne avesse dette 3, dopo essere passato dal transfer, avrebbe mostrato una 5-5 invitante. Occorre ricordarsi che il 2{{fiori}} prelude sempre a una mano non più che invitante, quindi al massimo 11.&lt;br /&gt;
&lt;br /&gt;
== Picche e poi cuori ==&lt;br /&gt;
La fonte osserva che la sequenza di risposta &amp;quot;picche e poi cuori&amp;quot; è sempre stata delicatissima nel naturale senza convenzioni: essendo un cambio di colore forzante, chiedeva all&#039;apertore di rialzare a 3 cuori tutte le volte che, anche con 12, preferiva il secondo colore. Questo creava al rispondente crisi di coscienza imbarazzanti (esempio della slide con apertura 1{{quadri}}: picche KJxxx, cuori AJxx, quadri xx, fiori xx, dopo 1{{quadri}} 1{{picche}} 1SA). Il fatto che, con l&#039;XY, la replica 2{{cuori}} sia passabile è un grande sollievo.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La fonte non indica varianti della convenzione. Non esistono pagine di varianti nel wiki.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Stayman]]&lt;br /&gt;
* [[Fiori forte]]&lt;br /&gt;
* [[Precision]]&lt;br /&gt;
* [[Landy]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, lezione 05 — La convenzione WALSH (slide).&lt;br /&gt;
* Nota: il contenuto è trascritto da slide; revisione da parte di un esperto consigliata. Gli esempi con &amp;quot;x&amp;quot; sulla slide sono indicati come &#039;&#039;mano completata&#039;&#039; con carte basse plausibili.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Walsh&amp;diff=2009</id>
		<title>Walsh</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Walsh&amp;diff=2009"/>
		<updated>2026-11-02T19:48:47Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Nuova pagina Walsh (bozza IA da verificare)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Walsh}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di risposta]]&lt;br /&gt;
[[Categoria:Risposte a 1 fiori]]&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Walsh&lt;br /&gt;
|tipologia=Sviluppo&lt;br /&gt;
|scopo=Dopo l&#039;apertura di 1{{fiori}}, permettere al rispondente con un quarto nobile (senza quinta nobile) di rispondere 1{{quadri}} e lasciare all&#039;apertore la dichiarazione del proprio quarto nobile, per trovare un fit 4-4 nei colori maggiori.&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} del compagno (non forte e non artificiale); il rispondente ha circa 6+ punti onori, un quarto nobile e nessuna quinta nobile.&lt;br /&gt;
|risposte=Schema di riferimento (da verificare): 1{{quadri}} = quarto nobile, 6+ PO, nessuna quinta nobile; l&#039;apertore dichiara per primo un proprio quarto nobile (1{{cuori}} o 1{{picche}}); con 4{{cuori}} 4{{picche}} nel rispondente si cerca il fit; senza nobile quarto l&#039;apertore ridichiara 1SA se bilanciato (nello schema qui descritto 12-14 PO) o il proprio colore.&lt;br /&gt;
|note=Redatto da IA e da verificare dagli esperti: nessuna fonte primaria verificata (vedi Fonti). Le soglie di punti e il trattamento di 1{{quadri}} (solo con quarto nobile, oppure anche con quadri lunghi) variano tra gli autori e i sistemi: sono varianti, non regole consolidate. Compatibile con i sistemi naturali con 1{{fiori}} non forte.&lt;br /&gt;
|tag_cc=response_walsh&lt;br /&gt;
|tag_sistema=naturale,quinta_nobile&lt;br /&gt;
|shape_constraints=1D con 4 cuori: pairhcp:18-28 opener hcp:12-17; responder H:4 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // 1D con 4 picche: pairhcp:18-28 opener hcp:12-17; responder S:4 H:0-3 hcp:6-11; opp1 quiet; opp2 quiet // 1D con 4-4 nobili: pairhcp:18-28 opener hcp:12-17; responder S:4 H:4 hcp:6-11; opp1 quiet; opp2 quiet // rientro apertore con fit a cuori: pairhcp:18-28 opener H:4 hcp:12-17; responder H:4 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet // rientro apertore con fit a picche: pairhcp:18-28 opener S:4 H:0-3 hcp:12-17; responder S:4 H:0-3 hcp:6-11; opp1 quiet; opp2 quiet // 1SA bilanciato dell&#039;apertore: pairhcp:18-26 opener shape:balanced hcp:12-14 H:0-3 S:0-3; responder H:4 S:0-3 hcp:6-11; opp1 quiet; opp2 quiet&lt;br /&gt;
|shape_roles=opener=Apertore;responder=Rispondente;opp1=Avversario;opp2=Avversario&lt;br /&gt;
|cc_text_default=Walsh (1♦ su 1♣ = quarto nobile, 6+ PO)&lt;br /&gt;
|cc_text_response_walsh=Walsh: 1♦ su 1♣ con quarto nobile, l&#039;apertore dichiara il suo nobile&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #c80; padding:6px;&amp;quot;&amp;gt;&#039;&#039;&#039;Bozza redatta da IA, da verificare dagli esperti finché non rivista.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;Walsh&#039;&#039;&#039; è una convenzione di risposta all&#039;apertura di &#039;&#039;&#039;1{{fiori}}&#039;&#039;&#039; naturale (non forte e non artificiale), in cui il rispondente con un &#039;&#039;&#039;quarto nobile&#039;&#039;&#039; e senza quinta nobile risponde &#039;&#039;&#039;1{{quadri}}&#039;&#039;&#039; invece di dichiarare il nobile, lasciando all&#039;apertore la possibilità di dichiarare per primo un proprio quarto nobile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Nota di redazione&#039;&#039;: le fonti consultabili per questa pagina non descrivono la convenzione (vedi [[#Fonti|Fonti]]). Quanto segue è uno schema di riferimento prudente; i punti che nelle fonti degli autori cambiano sono indicati come varianti.&lt;br /&gt;
&lt;br /&gt;
== Idea ==&lt;br /&gt;
Con un quarto nobile non si vuole dichiarare il colore se il fit non è certo, e si preferisce che sia l&#039;apertore, che può avere un quarto nobile, a dichiararlo per primo. Il rispondente con 1{{quadri}} indica una mano con almeno un quarto nobile e dà all&#039;apertore la possibilità di rispondere nel suo nobile: se si trova un fit 4-4 lo si raggiunge e il contratto è giocato dalla mano più adatta.&lt;br /&gt;
&lt;br /&gt;
== Apertura ==&lt;br /&gt;
L&#039;apertura è &#039;&#039;&#039;1{{fiori}}&#039;&#039;&#039; naturale o &#039;&#039;contenitore&#039;&#039; (spesso con 3 carte in sistemi a quinta nobile), con punti normali. Non si applica ai sistemi a &#039;&#039;&#039;[[Fiori forte]]&#039;&#039;&#039; (dove 1{{fiori}} è artificiale e le risposte sono diverse; vedi anche [[Precision]]): in tali sistemi le risposte a 1{{fiori}} seguono lo schema del sistema.&lt;br /&gt;
&lt;br /&gt;
== Risposta di 1{{quadri}} ==&lt;br /&gt;
Schema di riferimento:&lt;br /&gt;
* &#039;&#039;&#039;6+ punti onori&#039;&#039;&#039; circa;&lt;br /&gt;
* &#039;&#039;&#039;quarto nobile&#039;&#039;&#039; (cuori o picche) o entrambi;&lt;br /&gt;
* &#039;&#039;&#039;nessuna quinta&#039;&#039;&#039; in un nobile (con quinta si risponde nel colore lungo);&lt;br /&gt;
* senza una mano adatta a un&#039;altra risposta più descrittiva.&lt;br /&gt;
&lt;br /&gt;
=== Esempio 1: 1{{quadri}} con 4{{cuori}} ===&lt;br /&gt;
Mano del rispondente (Sud), 4{{cuori}} senza quinta nobile:&lt;br /&gt;
&amp;lt;hand&amp;gt;J32.KQ72.84.J983&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 1H P 2H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;apertore (Nord) con 4{{cuori}} ridichiara 1{{cuori}}, il rispondente appoggia a livello minimo con una mano minima: fit 4-4 raggiunto.&lt;br /&gt;
&lt;br /&gt;
Mano dell&#039;apertore:&lt;br /&gt;
&amp;lt;hand&amp;gt;A85.AJ96.KQ2.754&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rientro dell&#039;apertore ==&lt;br /&gt;
Dopo 1{{fiori}} P 1{{quadri}} P, l&#039;apertore dichiara per primo il proprio &#039;&#039;&#039;quarto nobile&#039;&#039;&#039;:&lt;br /&gt;
* con 4{{cuori}} dichiara 1{{cuori}}, con 4{{picche}} dichiara 1{{picche}}: indica il fit atteso se il rispondente ha lo stesso nobile;&lt;br /&gt;
* senza nobile quarto, se bilanciato, ridichiara &#039;&#039;&#039;1SA&#039;&#039;&#039; (nello schema qui descritto 12-14 PO) oppure il proprio colore: 2{{fiori}} con fiori lunghi o un colore minore.&lt;br /&gt;
&lt;br /&gt;
=== Esempio 2: 1SA bilanciato dell&#039;apertore ===&lt;br /&gt;
Mano dell&#039;apertore (Nord), bilanciata 12-14 senza quarto nobile:&lt;br /&gt;
&amp;lt;hand&amp;gt;KQ4.J85.AJ73.Q52&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mano del rispondente (Sud):&lt;br /&gt;
&amp;lt;hand&amp;gt;85.KQ72.Q94.J1083&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 1SA P 2H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;apertore non ha un quarto nobile e ridichiara 1SA; il rispondente, con mano minima e 4{{cuori}}, può fermarsi in un contratto parziale secondo gli accordi di coppia (qui 2{{cuori}} è solo indicativo: dettaglio da verificare).&lt;br /&gt;
&lt;br /&gt;
=== Esempio 3: 4-4 nei nobili ===&lt;br /&gt;
Mano del rispondente, 4{{picche}} 4{{cuori}}:&lt;br /&gt;
&amp;lt;hand&amp;gt;K942.A653.82.Q74&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mano dell&#039;apertore, con 4{{picche}}:&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ75.K2.KQ95.J63&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 1S P 2S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;apertore dichiara il proprio quarto nobile (1{{picche}}) e il rispondente appoggia: fit 4-4 a picche.&lt;br /&gt;
&lt;br /&gt;
== Con 5-4 nei nobili ==&lt;br /&gt;
Con 5-4 nei nobili si risponde generalmente nel colore lungo (5 carte), non con 1{{quadri}}: è fuori dallo schema Walsh qui descritto.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
La Walsh è citata in letteratura in più forme; nessuna pagina del wiki e nessuna fonte consultata fissa i dettagli. Punti da verificare:&lt;br /&gt;
* soglia minima di punti del rispondente (6+ nello schema qui riportato) e mani con quadri lunghi che passano comunque da 1{{quadri}};&lt;br /&gt;
* uso con 4-4 nobili: se rispondere in 1{{cuori}} (up-the-line) o in 1{{quadri}};&lt;br /&gt;
* punti dell&#039;1SA di ridichiarazione dell&#039;apertore (12-14 nello schema qui riportato);&lt;br /&gt;
* se il rispondente con mano da manche ha sviluppi diversi dalla risposta Walsh (spesso 2/1 o salto);&lt;br /&gt;
* nessuna pagina &amp;quot;Walsh (variante)&amp;quot; esiste: le varianti non sono sviluppate qui.&lt;br /&gt;
&lt;br /&gt;
== Vantaggi e svantaggi ==&lt;br /&gt;
* Vantaggio: l&#039;apertore non rischia di restare senza un fit nobile perché il rispondente non dichiara per primo; il fit 4-4 si trova a livello basso.&lt;br /&gt;
* Vantaggio: il rispondente con mano povera ha un&#039;unica risposta naturale per le mani con quarto nobile.&lt;br /&gt;
* Svantaggio: 1{{quadri}} diventa ambiguo (può nascondere quadri o nobili), ed è meno descrittivo quando il rispondente ha una buona mano di manche.&lt;br /&gt;
* Svantaggio: se l&#039;apertore ha fiori lunghi può preferire 2{{fiori}} e perdere il nobile.&lt;br /&gt;
&lt;br /&gt;
== Rapporto con il resto del sistema ==&lt;br /&gt;
Compatibile con le risposte naturali a 1{{fiori}} nei sistemi a quinta nobile. Non si usa nei sistemi in cui 1{{fiori}} è artificiale (vedi [[Fiori forte]], [[Precision]]). Si può affiancare a convenzioni di ricerca del fit come lo [[Stayman]] (su 1SA) per le mani bilanciate.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Stayman]]&lt;br /&gt;
* [[Fiori forte]]&lt;br /&gt;
* [[Precision]]&lt;br /&gt;
* [[Landy]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Fonte da completare: nessuna fonte primaria verificata al momento della redazione. L&#039;attribuzione della convenzione a Richard Walsh non è supportata da fonti presenti nel wiki, e non è stata inserita qui.&lt;br /&gt;
* Nel wiki la Walsh compare solo come voce della scheda convenzionale BridgeCC (risposta 1{{quadri}} a 1{{fiori}}); non è una fonte sul contenuto.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Gioco_di_eliminazione&amp;diff=2008</id>
		<title>Gioco di eliminazione</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Gioco_di_eliminazione&amp;diff=2008"/>
		<updated>2026-10-28T07:36:01Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Scenari E2-E4: vincoli difensori/punti e nota di verifica aggiornata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Convenzione&lt;br /&gt;
|nome=Gioco di eliminazione&lt;br /&gt;
|tipologia=Tecnica di gioco&lt;br /&gt;
|scopo=Togliere alla difesa le uscite neutre nei colori laterali, in modo che un avversario messo in presa debba muovere un colore pericoloso o giocare in taglio e scarto, evitando di dipendere dalla posizione di una carta.&lt;br /&gt;
|trigger=Contratto a colore con atout lunghi in linea e colori laterali che si possono eliminare (incassando le vincenti e tagliando le perdenti), con un colore chiave in cui la difesa, costretta a giocare per prima, ci regala una presa.&lt;br /&gt;
|risposte=1) Contare le prese sicure e le perdenti; 2) battere le atout; 3) incassare e tagliare i colori laterali; 4) mettere in presa un avversario (messa in mano); 5) lasciare alla difesa solo il colore pericoloso o il taglio e scarto.&lt;br /&gt;
|note=Alternativa alla linea di impasse o expasse: l&#039;eliminazione non dipende dalla posizione di una carta ma richiede che la difesa non abbia uscite neutre. Pagina di tecnica di gioco, non di licita: nessun tag BridgeCC applicabile.&lt;br /&gt;
|shape_constraints=E1 messa in mano a cuori: opener S:5 S=AKQJ H:2 H=x D:3 D=J C:3 C=AQ; responder S:4 S=x H:3 H=AQ D:4 D=Q C:2 C=K // E2 dama a picche evitata: opener S:2 S=AQ H:4 H=AKQ D:3 D=x C:4 C=KQJT; responder S:2 S=x H:4 H=x D:3 D=AKJ C:4 C=x; opp1 H:2-3; opp2 H:2-3 // E3 slam a quadri con atout 2-2: opener S:5 S=AKQ H:3 H=K D:4 D=AQ C:1 C=x; responder S:4 S=x H:3 H=A D:4 D=K C:2 C=A; opp1 S:2 hcp:4-7; opp2 S:2 hcp:4-7 // E4 taglio e scarto: opener S:5 S=KQT H:3 H=x D:2 D=K C:3 C=AQ; responder S:4 S=AJ9 H:2 H=T D:4 D=A C:3 C=x; opp1 S:2 H:4 H=AKQ D:4; opp2 S:2 hcp:4-8 // E5 sottoapertura a quadri: opener S:2 S=x H:3 H=K D:2 D=AQ C:6 C=AQT; responder S:4 S=AKQ H:4 H=Q D:2 D=x C:3 C=KJ; opp1 D:6 D=KJT H:3 H=A&lt;br /&gt;
|shape_roles=opener=Dichiarante;responder=Morto;opp1=Attaccante;opp2=Quarta mano&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;gioco di eliminazione&#039;&#039;&#039; (in inglese &#039;&#039;elimination play&#039;&#039; o &#039;&#039;strip and throw-in&#039;&#039;) è una tecnica del [[Gioco della carta (bridge)|gioco della carta]] con cui il dichiarante, in un contratto a colore, toglie uno dopo l&#039;altro i colori laterali alla difesa e poi mette in presa un avversario, che si trova costretto a giocare un colore dove regala una presa oppure a muovere in taglio e scarto.&lt;br /&gt;
&lt;br /&gt;
== Quando si usa ==&lt;br /&gt;
Si pensa all&#039;eliminazione quando:&lt;br /&gt;
* il contratto è a colore e la linea in atout è tranquilla (tipicamente le atout si battono senza problemi);&lt;br /&gt;
* resta un solo colore da giocare con difficoltà, di solito con una perdente che dipende da un impasse o da una posizione di carte;&lt;br /&gt;
* i colori laterali si possono esaurire incassando le vincenti e tagliando le piccole, in mano o al morto;&lt;br /&gt;
* un avversario può essere messo in presa senza che gli rimanga una uscita neutra.&lt;br /&gt;
&lt;br /&gt;
== Come si svolge ==&lt;br /&gt;
# &#039;&#039;&#039;Conta&#039;&#039;&#039;: si contano le prese sicure e le perdenti e si individua il colore dove la difesa può fare danno.&lt;br /&gt;
# &#039;&#039;&#039;Atout&#039;&#039;&#039;: di norma si battono le atout, per impedire alla difesa di tagliare e per mantenere il controllo.&lt;br /&gt;
# &#039;&#039;&#039;Eliminazione dei colori laterali&#039;&#039;&#039;: si incassano le vincenti dei colori laterali e si tagliano le perdenti, finché la difesa non ha più carte in quei colori.&lt;br /&gt;
# &#039;&#039;&#039;Messa in mano&#039;&#039;&#039;: si cede una presa a un avversario scelto, in modo che debba rigiocare.&lt;br /&gt;
# &#039;&#039;&#039;Scelta del colore&#039;&#039;&#039;: la difesa può muovere solo il colore pericoloso, oppure giocare in taglio e scarto, che permette al dichiarante di scartare una perdente e tagliare nell&#039;altra mano.&lt;br /&gt;
&lt;br /&gt;
== Eliminazione e impasse a confronto ==&lt;br /&gt;
La linea di impasse o expasse dipende dalla posizione di una carta: se è sbagliata, la mano cade. L&#039;eliminazione sposta il problema: invece di indovinare dove sta la carta, si costringe la difesa a muovere per prima nel colore dove si vuole che giochi. Funziona quando la difesa non ha uscite neutre, cioè colori dove può giocare senza regalare nulla. Quando le ha ancora, la messa in mano non produce l&#039;effetto sperato e occorre ripiegare sulla linea di impasse.&lt;br /&gt;
&lt;br /&gt;
== Errori tipici ==&lt;br /&gt;
* &#039;&#039;&#039;Incassare un giro di troppo&#039;&#039;&#039;: togliere una carta che serviva come uscita al dichiarante o come ingresso, e lasciare alla difesa una uscita neutra.&lt;br /&gt;
* &#039;&#039;&#039;Togliere troppo presto un ingresso&#039;&#039;&#039;: dopo aver eliminato i colori, al dichiarante manca il rientro in mano o al morto necessario a completare la tecnica.&lt;br /&gt;
* &#039;&#039;&#039;Non contare prima&#039;&#039;&#039;: iniziare a incassare senza avere stabilito quale colore deve restare alla difesa.&lt;br /&gt;
&lt;br /&gt;
== Esempio 1: messa in mano a cuori ==&lt;br /&gt;
Nord è dichiarante, nessuno in zona. Contratto 4{{picche}}, attacco Fante di fiori.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal dealer=&amp;quot;N&amp;quot; vul=&amp;quot;None&amp;quot; board=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
N: AKQJ7.52.J74.AQ5&lt;br /&gt;
E: 86.J943.A106.J1097&lt;br /&gt;
S: T954.AQ6.Q852.K6&lt;br /&gt;
W: 32.K1087.K93.8432&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1S P 2NT P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dopo aver battuto le atout, si incassano i fiori scartando una piccola di cuori dal morto e si incassano gli onori di cuori. La difesa, messa in presa, deve muovere quadri oppure giocare in taglio e scarto. La linea di impasse a cuori e di expasse a quadri riuscirebbe solo con certe posizioni (circa il 67 %); l&#039;eliminazione realizza dieci prese qualunque sia la difesa (verificato a carte scoperte).&lt;br /&gt;
&lt;br /&gt;
== Esempio 2: la dama di quadri e l&#039;impasse a picche non servono ==&lt;br /&gt;
Ovest è dichiarante, Est-Ovest in zona. Contratto 4{{cuori}}, attacco 5 di fiori.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal dealer=&amp;quot;W&amp;quot; vul=&amp;quot;EW&amp;quot; board=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
N: KJ7652.JT.8632.5&lt;br /&gt;
E: 98.6543.AJ5.7432&lt;br /&gt;
S: T43.972.Q97.A986&lt;br /&gt;
W: AQ.AKQ8.KT4.KQJT&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2D P 2NT P 3C P 3H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dopo aver battuto le atout e incassato i fiori, basta giocare Asso e Dama di picche (eliminazione) invece di indovinare la posizione della Dama di quadri o di tentare l&#039;impasse a picche: la linea di eliminazione riesce nel 100 % dei casi contro circa il 75 % delle altre. Dieci prese verificate a carte scoperte.&lt;br /&gt;
&lt;br /&gt;
== Regole di generazione ==&lt;br /&gt;
Questa pagina fornisce a Play le regole per generare smazzate di allenamento. Ogni scenario fissa la struttura del dichiarante e del morto: le lunghezze dei colori e gli onori del colore chiave; le carte basse e gli onori non nominati sono casuali e sui difensori i vincoli di punti sono solo quelli indicati negli scenari E3 e E4.&lt;br /&gt;
* &#039;&#039;&#039;E1 (messa in mano a cuori)&#039;&#039;&#039;: dichiarante con cinque picche e AKQJ, morto con quattro picche; contratto da giocare 4{{picche}}.&lt;br /&gt;
* &#039;&#039;&#039;E2 (dama a picche evitata)&#039;&#039;&#039;: dichiarante con AKQ di cuori e KQJT di fiori, morto con quattro cuori e Asso, Re e Fante di quadri; il Re di quadri è in mano al Morto (il Dichiarante ha 21 PO e il Morto 8) e i difensori hanno i cuori divisi 3-2; contratto da giocare 4{{cuori}}. Motivo: mani meno sbilanciate nei punti.&lt;br /&gt;
* &#039;&#039;&#039;E3 (slam a quadri con atout 2-2)&#039;&#039;&#039;: slam a picche (contratto 6{{picche}}) con colore chiave a quadri e atout divisi 2-2 fra i difensori; ogni difensore ha 4-7 PO (mani meno sbilanciate nei punti).&lt;br /&gt;
* &#039;&#039;&#039;E4 (taglio e scarto)&#039;&#039;&#039;: contratto 4{{picche}} con taglio e scarto: l&#039;attaccante (opp1) ha Asso, Re e Dama di cuori quarte e quattro quadri, atout 2-2; il difensore Quarta mano (opp2) ha 4-8 PO (mani meno sbilanciate nei punti).&lt;br /&gt;
* &#039;&#039;&#039;E5 (sottoapertura a quadri)&#039;&#039;&#039;: contratto 6{{fiori}} dopo una sottoapertura a quadri dell&#039;attaccante: ha quadri sesti con K, J, 10 e l&#039;Asso di cuori.&lt;br /&gt;
Gli scenari E2-E5 vincolano anche i difensori, perché la linea di eliminazione dipende da come sono divisi gli atout e da dove stanno gli onori.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota di verifica.&#039;&#039;&#039; Gli scenari sono stati controllati campionando mani e risolvendole a carte scoperte con la difesa migliore: il contratto si realizza in E1 10/10, E2 8/8 (con cuori dei difensori 2-3; senza quel vincolo 6/8: le mani fallivano con cuori 4-1 o vuoti), E3 7/8, E4 7 su 7 risolte tutte realizzate (1 non risolta nel tempo massimo), E5 8/8. I campioni sono piccoli, quindi sono indicazioni e non garanzie; il solutore è un double-dummy interno. Il contratto è sempre realizzabile solo con la linea di eliminazione nelle mani generate, salvo le eccezioni indicate.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Gioco della carta (bridge)]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* ProgettoBridge, &#039;&#039;Lezione 18 — Gioco di Eliminazione, Smazzate esplicative&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Editor_e_Laboratorio&amp;diff=2007</id>
		<title>Progetto:BridgeShape Editor e Laboratorio</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Editor_e_Laboratorio&amp;diff=2007"/>
		<updated>2026-10-28T07:05:45Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Corretto grassetto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]] · [[Progetto:BridgeShape Smazzate di gioco|Smazzate di gioco]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Editor avanzato e Laboratorio di test (brief per Play) =&lt;br /&gt;
&lt;br /&gt;
Integra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_ENGINE_SPEC.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; §8.4 (editor) e §5.8 (statistiche). Origine: la scrittura degli scenari&lt;br /&gt;
di &amp;quot;Gioco di eliminazione&amp;quot; (E1–E5) ha mostrato che il DSL è espressivo ma &#039;&#039;&#039;non si vede come&lt;br /&gt;
vengono generate le mani&#039;&#039;&#039;: gli scenari risultavano sbilanciati (es. apertore 24 PO, risponditore 5;&lt;br /&gt;
avversari a 0 PO che ricevono tutti i punti residui) e ce ne si accorge solo guardando mani a caso.&lt;br /&gt;
&lt;br /&gt;
== 1. Il DSL è abbastanza generale? Lacune da colmare ==&lt;br /&gt;
&lt;br /&gt;
Coperto bene: lunghezze, forma, PO totali/per seme, onori esatti (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=AKQJ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), pattern, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
fermate, controlli, carte chiave, LTC, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, variabili, macro, contesto (dealer, contratto, attacco).&lt;br /&gt;
&lt;br /&gt;
Lacune (in ordine di priorità):&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Nessun controllo su come si distribuisce il resto.&#039;&#039;&#039; Le carte non vincolate vanno a caso alle mani libere. Servono:&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;default-opp: realistic&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; già esistente) con soglie ragionevoli per gli avversari;&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per ogni posizione &#039;&#039;&#039;anche come intervallo &amp;quot;tipico&amp;quot;&#039;&#039;&#039; (non solo filtro);&lt;br /&gt;
#* opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;spread: even&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che, dopo i vincoli, ripartisce gli onori residui senza concentrarli in una mano.&lt;br /&gt;
# &#039;&#039;&#039;Vincoli di esito (post-filtro double-dummy)&#039;&#039;&#039;: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;makes: 4S by opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tricks: 10-11&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead-fails&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Fondamentali per le tecniche di gioco (eliminazione, messa in presa, squeeze). Opzionali, con budget di tempo; se il solver non c&#039;è → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires: dd&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Il solver va eseguito solo dopo i filtri economici.&lt;br /&gt;
# &#039;&#039;&#039;Vincoli di relazione fra mani&#039;&#039;&#039; (es. &amp;quot;i due avversari hanno insieme 8+ carte di ♥&amp;quot;, &amp;quot;atout 3-2 / 4-1 fra i difensori&amp;quot;): oggi si ottengono solo fissando le lunghezze di entrambi.&lt;br /&gt;
# &#039;&#039;&#039;Vincoli &amp;quot;morbidi&amp;quot;/pesati&#039;&#039;&#039;: preferenze (peso 0–1) invece di filtri duri, per mani più naturali senza far esplodere il tasso di rifiuto.&lt;br /&gt;
# &#039;&#039;&#039;Carte o vincoli fissati dall&#039;utente nel test&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, già in §5.6) con override temporanei.&lt;br /&gt;
&lt;br /&gt;
== 2. Editor &amp;quot;potentissimo&amp;quot; (estende §8.4) ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pannello Mani&#039;&#039;&#039; con le 4 posizioni, per ciascuna: barre min-max di lunghezze per seme, PO, griglia onori (deve / non deve / indifferente / &amp;quot;uno fra&amp;quot;), sempre sincronizzato col DSL testuale.&lt;br /&gt;
* &#039;&#039;&#039;Indicatori in tempo reale di fattibilità&#039;&#039;&#039;: mentre si modifica, calcolo esatto/rapido di: somma minimi vs 13 carte, somma minimi PO vs 40, onori richiesti in conflitto (stessa carta a due mani), stima del tasso di successo (campionamento rapido a 200 tentativi con barra di avanzamento).&lt;br /&gt;
* &#039;&#039;&#039;Avvisi di sbilanciamento&#039;&#039;&#039; (punto chiave): avvisa se la distribuzione implicita dei PO fra le mani è anomala (es. una mano ≥ 22 e il compagno ≤ 6; un avversario a 0 con l&#039;altro a ≥ 12; coppia fuori da 23–33 senza motivo) e proponi la correzione.&lt;br /&gt;
* &#039;&#039;&#039;Validazione live&#039;&#039;&#039; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (errori, avvisi, descrizioni, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Cronologia e confronto&#039;&#039;&#039;: versioni salvate, diff DSL + diff statistiche fra due versioni.&lt;br /&gt;
* &#039;&#039;&#039;Esportazione&#039;&#039;&#039;: &amp;quot;Copia per BridgePedia&amp;quot; (riga &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), JSON, link con seed.&lt;br /&gt;
* &#039;&#039;&#039;Modelli&#039;&#039;&#039; dalle convenzioni del wiki e dalle ricette (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Progetto:BridgeShape Ricette DSL&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== 3. Laboratorio di test: capire come vengono generate le mani ==&lt;br /&gt;
&lt;br /&gt;
Pulsante &amp;quot;Prova&amp;quot; → modale &amp;quot;Laboratorio&amp;quot; su N mani (default 1000, fino a 10.000, in background con&lt;br /&gt;
progresso, seed fisso riproducibile). Output:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Esito del campionamento&#039;&#039;&#039;: tasso di successo, tentativi medi/p95, tempo medio/p95, mani generate/rifiutate.&lt;br /&gt;
# &#039;&#039;&#039;Vincolo colpevole&#039;&#039;&#039;: per ogni vincolo la % di scarti che provoca (quale pezzo dello scenario rende lo scenario lento o raro).&lt;br /&gt;
# &#039;&#039;&#039;Istogrammi per posizione&#039;&#039;&#039; (apertore/compagno/avv. sx/avv. dx): PO (0–37), lunghezza per seme, forma (classi), numero di assi/re/controlli, LTC. Con &#039;&#039;&#039;linee dei limiti richiesti&#039;&#039;&#039;, media, mediana, percentili 5/95.&lt;br /&gt;
# &#039;&#039;&#039;Confronto con la base&#039;&#039;&#039;: stessi istogrammi su un mazzo non vincolato, per vedere di quanto lo scenario distorce (misura per seme: variazione rispetto al caso).&lt;br /&gt;
# &#039;&#039;&#039;Frequenza onori per mano&#039;&#039;&#039;: matrice posizione × carta (A K Q J T) con % di presenza, per scoprire concentrazioni (es. &amp;quot;ogni volta l&#039;avversario sx ha l&#039;Asso di ♦&amp;quot;).&lt;br /&gt;
# &#039;&#039;&#039;Coppia&#039;&#039;&#039;: istogramma PO della coppia, distribuzione dei fit (lunghezza d&#039;atout combinata), spaccature degli atout dei difensori (3-2, 4-1, 5-0).&lt;br /&gt;
# &#039;&#039;&#039;Test di equità&#039;&#039;&#039;: verifica che il campionamento sia uniforme sullo spazio dei vincoli (confronto tra due seed e tra metodo a rifiuto e costruttivo; chi² sulle frequenze di carte/posizioni). Segnala bias (es. carte basse sempre nella stessa mano).&lt;br /&gt;
# &#039;&#039;&#039;Se disponibile il solver&#039;&#039;&#039;: percentuale di mani in cui il contratto dichiarato si realizza, e distribuzione delle prese; elenco delle mani contro-esempio apribili con un clic.&lt;br /&gt;
# &#039;&#039;&#039;Galleria&#039;&#039;&#039;: le prime 10 mani, un clic per aprirne il perché (§5.4) e per &amp;quot;fissa e rigenera&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Report esportabile&#039;&#039;&#039; (JSON + testo) da inviare a BridgePedia (§8.5), così gli editor del wiki tarano i vincoli. Accettiamo un campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;labReport&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nello scenario problematico.&lt;br /&gt;
&lt;br /&gt;
== 4. API richieste (aggiunte a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_GENERATOR_API.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/lab&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{source, dsl, scenario, n, seed, solver?: bool}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;jobId&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api/deals/lab/{jobId}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{status, progress, success, attempts, timing, rejectBy[], histograms{}, honors{}, balance{warnings[]}, fairness{}, dd?{}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (già in §5.5) per le mani contro-esempio.&lt;br /&gt;
* Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lab&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dd&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;spread&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;relations&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;soft&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 5. Criteri di accettazione ==&lt;br /&gt;
&lt;br /&gt;
# Per ogni scenario del wiki il laboratorio parte in &amp;amp;lt; 2 s e fornisce i 10 punti sopra per N=1000 entro 30 s.&lt;br /&gt;
# Gli avvisi di sbilanciamento segnalano E2 di &amp;quot;Gioco di eliminazione&amp;quot; (24/5 PO) prima della generazione.&lt;br /&gt;
# Due esecuzioni con stesso seed danno identici istogrammi.&lt;br /&gt;
# Test di equità: nessuno scarto &amp;amp;gt; 3σ rispetto all&#039;attesa sui vincoli non esplicitati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Progetto:BridgeShape Motore e frontend]]&lt;br /&gt;
* [[Progetto:BridgeShape API]]&lt;br /&gt;
* [[Progetto:BridgeShape Ricette DSL]]&lt;br /&gt;
* [[Gioco di eliminazione]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Esperienza di scrittura degli scenari di Gioco di eliminazione (ProgettoBridge, Lezione 18) e specifica interna BridgeShape&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=2006</id>
		<title>Progetto:BridgeShape API</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=2006"/>
		<updated>2026-10-28T07:05:34Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Link a Editor e Laboratorio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]] · [[Progetto:BridgeShape Smazzate di gioco|Smazzate di gioco]] · [[Progetto:BridgeShape Editor e Laboratorio|Editor e Laboratorio]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — API per Generatori di Smazzate =&lt;br /&gt;
&lt;br /&gt;
Documentazione tecnica per chi sviluppa un generatore di smazzate di test&lt;br /&gt;
che legge i vincoli di distribuzione (shape constraints) dalle convenzioni&lt;br /&gt;
di BridgePedia.&lt;br /&gt;
&lt;br /&gt;
== Panoramica ==&lt;br /&gt;
&lt;br /&gt;
Ogni pagina wiki di convenzione su BridgePedia può definire nel template&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Convenzione}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; un campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che descrive, in un formato&lt;br /&gt;
DSL compatto, i vincoli di distribuzione delle mani dei 4 giocatori al tavolo.&lt;br /&gt;
&lt;br /&gt;
L&#039;estensione &#039;&#039;&#039;BridgeShape&#039;&#039;&#039; espone un&#039;API REST/JSON per leggere questi&lt;br /&gt;
vincoli in modo strutturato.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== API Endpoint ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GET /api.php?action=bridgeshape&amp;amp;shapeaction=ACTION&amp;amp;format=json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Azioni disponibili ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Azione&lt;br /&gt;
! Descrizione&lt;br /&gt;
! Parametri&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Vincoli per una singola convenzione&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pageid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;title&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco convenzioni con vincoli definiti&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco tutte le convenzioni (con/senza vincoli)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Valida una stringa DSL senza bisogno di una pagina wiki&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi di chiamata ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Per titolo pagina&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;title=Splinter&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Per page ID&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;pageid=42&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Elenco pagine con vincoli&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Validare una stringa DSL&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=validate&amp;amp;dsl=opener+H:5%2B+hcp:12-21&amp;amp;format=json&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato risposta JSON ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;shapeconstraints&amp;quot;: {&lt;br /&gt;
    &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
    &amp;quot;raw&amp;quot;: &amp;quot;1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 // ...&amp;quot;,&lt;br /&gt;
    &amp;quot;scenarios&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;1H-4C&amp;quot;,&lt;br /&gt;
        &amp;quot;positions&amp;quot;: {&lt;br /&gt;
          &amp;quot;opener&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 5, &amp;quot;max&amp;quot;: null }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 12, &amp;quot;max&amp;quot;: 21 }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;responder&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 4, &amp;quot;max&amp;quot;: null },&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 1 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;suit_hcp&amp;quot;: {&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 0 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 10, &amp;quot;max&amp;quot;: 15 }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fit&amp;quot;: []&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Descrizioni leggibili.&#039;&#039;&#039; Insieme a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stesso ordine): per ogni scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;label&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(per posizione, elenco di frasi già tradotte, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;♠: ha K J 10 (e non A Q 9)&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nome del ruolo, es. &amp;quot;Attaccante&amp;quot; se la pagina ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
altrimenti &amp;quot;Apertore (chi usa la convenzione)&amp;quot;, &amp;quot;Compagno&amp;quot;, ...) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Parametro opzionale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (it, en, ...; default lingua dell&#039;API, di solito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;it&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
Serve a mostrare nell&#039;interfaccia di Play &#039;&#039;&#039;perché&#039;&#039;&#039; la mano è fatta così.&lt;br /&gt;
Nella posizione compare anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se è stata usata la macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pages&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Splinter&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 6,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;1H-4C&amp;quot;, &amp;quot;1H-4D&amp;quot;, &amp;quot;1H-4S&amp;quot;, &amp;quot;1S-4C&amp;quot;, &amp;quot;1S-4D&amp;quot;, &amp;quot;1S-4H&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 15,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Stayman&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 2,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;fit a cuori&amp;quot;, &amp;quot;fit a picche&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato DSL ==&lt;br /&gt;
&lt;br /&gt;
Il DSL (Domain Specific Language) è la stringa scritta nel campo&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; del template wiki.&lt;br /&gt;
&lt;br /&gt;
=== Struttura ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
etichetta: vincoli posizione; vincoli posizione // etichetta: vincoli // ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;//&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa gli scenari (il generatore ne sceglie uno random o li presenta all&#039;utente)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa le posizioni dentro uno scenario&lt;br /&gt;
* Ogni scenario ha un&#039;&#039;&#039;&#039;etichetta&#039;&#039;&#039; opzionale seguita da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Ogni posizione inizia col nome del ruolo, seguito da vincoli separati da spazi&lt;br /&gt;
&lt;br /&gt;
=== Posizioni ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Nome&lt;br /&gt;
! Ruolo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Chi apre o fa la prima licita convenzionale&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Il compagno dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a sinistra dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a destra dell&#039;opener (compagno di opp1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vincoli ===&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:5+       — almeno 5 picche&lt;br /&gt;
H:0-1      — 0 o 1 cuori&lt;br /&gt;
D:3        — esattamente 3 quadri&lt;br /&gt;
C:2-5      — da 2 a 5 fiori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Semi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Spades/Picche, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Hearts/Cuori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;D&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Diamonds/Quadri, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Clubs/Fiori&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
x:0-1      — un seme qualsiasi (tra quelli non specificati) con 0-1 carte&lt;br /&gt;
x:6+       — un seme non specificato con almeno 6 carte&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il generatore sceglie casualmente quale seme assegnare a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tra quelli&lt;br /&gt;
non già vincolati esplicitamente (S/H/D/C).&lt;br /&gt;
&lt;br /&gt;
==== HCP totali ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
hcp:15-17  — da 15 a 17 punti onore&lt;br /&gt;
hcp:12+    — almeno 12 punti&lt;br /&gt;
hcp:0-7    — da 0 a 7 punti&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Shcp:3+    — almeno 3 HCP a picche&lt;br /&gt;
Chcp:0     — 0 HCP a fiori (nessun onore)&lt;br /&gt;
Hhcp:0-2   — da 0 a 2 HCP a cuori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
xhcp:0     — 0 HCP nel seme wildcard (x)&lt;br /&gt;
xhcp:0-1   — 0-1 HCP nel seme x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shape class ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
shape:balanced      — distribuzione bilanciata (4333, 4432, 5332)&lt;br /&gt;
shape:semi_balanced — semibilanciata (5422, 6322)&lt;br /&gt;
shape:one_suiter    — monocolore&lt;br /&gt;
shape:two_suiter    — bicolore&lt;br /&gt;
shape:three_suiter  — tricolore&lt;br /&gt;
shape:any           — qualsiasi (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Onori esatti in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S=KJT      — in picche ha K, J e 10; NON ha A, Q, 9 (le carte basse 8-2 completano)&lt;br /&gt;
S=KT9      — sequenza interna: K, 10, 9; NON ha A, Q, J&lt;br /&gt;
H=Q        — a cuori ha la Q come unico onore tra A K Q J 10&lt;br /&gt;
D=x        — nessun onore a quadri (solo carte basse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le lettere ammesse sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La regola è: &#039;&#039;&#039;le carte elencate sono possedute, le altre tra A K Q J 10 9 NON lo sono&#039;&#039;&#039;; le carte&lt;br /&gt;
dall&#039;8 in giù sono libere e riempiono fino alla lunghezza del seme. Serve a&lt;br /&gt;
descrivere attacchi (sequenza interrotta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, interna &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, sotto onore &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;K&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Q&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e le carte del compagno. Si combina con la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:5 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;quot;S&amp;quot;: &amp;quot;KJT&amp;quot;, &amp;quot;H&amp;quot;: &amp;quot;&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(stringa vuota = nessuna carta alta). Il generatore deve:&lt;br /&gt;
* assegnare esattamente quegli onori alla mano e &#039;&#039;&#039;escluderli&#039;&#039;&#039; dalle altre mani del seme; gli onori non nominati da nessuna posizione sono distribuiti a caso, ma mai a una posizione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per quel seme che non li elenca;&lt;br /&gt;
* rispettare comunque &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (la validazione segnala le contraddizioni, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KQ Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o lo stesso onore a due mani).&lt;br /&gt;
&lt;br /&gt;
==== Pattern di mano in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, stile regex) ====&lt;br /&gt;
&lt;br /&gt;
Descrive &#039;&#039;&#039;l&#039;intera mano in quel seme&#039;&#039;&#039;, dall&#039;alto in basso, come una piccola&lt;br /&gt;
espressione regolare ancorata (inizio e fine):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S~AKQ.          — A, K, Q + una carta bassa (4 carte)&lt;br /&gt;
S~A...          — A + tre carte basse (4 carte)&lt;br /&gt;
S~AJT9.         — A, J, 10, 9 + una bassa&lt;br /&gt;
S~AKQ.|A...     — alternative: una OPPURE l&#039;altra&lt;br /&gt;
S~[KQ]x{2,3}    — K o Q (come unico onore) + 2 o 3 carte basse&lt;br /&gt;
S~KJT.*         — K, J, 10 + qualunque numero di basse (anche zero)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi:&lt;br /&gt;
* &#039;&#039;&#039;Carte alte&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &#039;&#039;&#039;sempre in ordine decrescente&#039;&#039;&#039;, ciascuna posseduta; quelle non nominate tra A K Q J 10 9 NON sono possedute.&lt;br /&gt;
* &#039;&#039;&#039;Classe&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[KQ]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = una carta tra quelle (si espande in alternative).&lt;br /&gt;
* &#039;&#039;&#039;Carta bassa&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) = una carta qualsiasi tra 8 e 2; compare solo in fondo. Quantificatori: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;?&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0-1), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (1 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n,m}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Più punti si sommano (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = tre basse).&lt;br /&gt;
* &#039;&#039;&#039;Alternative&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il generatore ne sceglie una a caso per ogni mano.&lt;br /&gt;
&lt;br /&gt;
È la forma più espressiva di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che resta valida): il pattern fissa anche&lt;br /&gt;
la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 4 carte). Se c&#039;è anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; i due vincoli devono&lt;br /&gt;
essere compatibili (la validazione API segnala le incompatibilità).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, già &#039;&#039;&#039;normalizzato&#039;&#039;&#039; (classi&lt;br /&gt;
espanse, quantificatori risolti), così il generatore non deve interpretare la&lt;br /&gt;
regex:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;suit_patterns&amp;quot;: {&lt;br /&gt;
  &amp;quot;S&amp;quot;: [&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;AKQ&amp;quot;, &amp;quot;low_min&amp;quot;: 1, &amp;quot;low_max&amp;quot;: 1},&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;A&amp;quot;,   &amp;quot;low_min&amp;quot;: 3, &amp;quot;low_max&amp;quot;: 3}&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = carte alte possedute (ordine A K Q J T 9); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; =&lt;br /&gt;
numero di carte basse (2-8), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessun limite. La lunghezza del&lt;br /&gt;
seme è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;len(cards) + numero di basse&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Il generatore sceglie una alternativa e&lt;br /&gt;
rispetta anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Gli onori di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vanno esclusi dalle altre&lt;br /&gt;
mani; quelli non nominati nella mano vanno ad altri a caso.&lt;br /&gt;
&lt;br /&gt;
==== Avversari &amp;quot;quiet&amp;quot; (nessun intervento) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opp1 quiet           — solo per opp1/opp2&lt;br /&gt;
opp2 quiet:0-7       — come quiet, ma con HCP personalizzati&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è una &#039;&#039;&#039;macro espansa dall&#039;API&#039;&#039;&#039;: nel JSON non compare mai la parola&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ma i vincoli già risolti. Chi legge l&#039;API (il generatore) non deve&lt;br /&gt;
implementare nulla di nuovo. Si espande in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:0-4 H:0-4 D:0-5 C:0-5 hcp:0-9 Shcp:0-3 Hhcp:0-3 Dhcp:0-4 Chcp:0-4&lt;br /&gt;
(con quiet:0-7 → hcp:0-7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significato: gli avversari possono avere colori lunghi (così le mani sono&lt;br /&gt;
varie), ma poveri di onori e con pochi punti: nessun colore da 6+ carte&lt;br /&gt;
(niente apertura di sbarramento), nessun contro informativo, nessun intervento&lt;br /&gt;
naturale credibile. Le distribuzioni ammesse sono quindi molte, ma con punti&lt;br /&gt;
ridotti: il generatore ha meno margine sugli HCP della coppia dichiarante&lt;br /&gt;
(40 punti totali: apertore+rispondente restano sopra ~22).&lt;br /&gt;
I token espliciti scritti sulla stessa posizione &#039;&#039;&#039;sostituiscono&#039;&#039;&#039; i default,&lt;br /&gt;
in qualsiasi ordine: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1 quiet S:0-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; lascia le picche 0-4 e tiene il resto.&lt;br /&gt;
Su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; la macro viene ignorata.&lt;br /&gt;
&lt;br /&gt;
==== Fit (vincolo cross-posizione) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit:H8+    — almeno 8 cuori totali tra i compagni&lt;br /&gt;
fit:S9+    — almeno 9 picche totali tra i compagni&lt;br /&gt;
fit:M8+    — almeno 8 carte in un seme maggiore (H o S)&lt;br /&gt;
fit:m8+    — almeno 8 carte in un seme minore (D o C)&lt;br /&gt;
fit:8+     — almeno 8 carte in un seme qualsiasi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fit si applica tra &#039;&#039;&#039;compagni&#039;&#039;&#039;:&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o a livello di scenario → coppia dichiarante&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → coppia difensiva&lt;br /&gt;
&lt;br /&gt;
=== Formato range ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sintassi&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Almeno 5 (min=5, max=null)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0-1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 0 a 1 (min=0, max=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Esattamente 3 (min=3, max=3)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 12 a 21 (min=12, max=21)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nella risposta JSON, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; significa &amp;quot;nessun limite superiore&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Semi non menzionati ===&lt;br /&gt;
&lt;br /&gt;
I semi &#039;&#039;&#039;non vincolati&#039;&#039;&#039; e non coperti da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono distribuiti &#039;&#039;&#039;casualmente&#039;&#039;&#039;&lt;br /&gt;
dal generatore, rispettando il vincolo che il totale delle carte per mano sia 13.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== DSL versione 2 (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion: 2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
Tutto ciò che sopra resta valido e &#039;&#039;&#039;invariato&#039;&#039;&#039;: i campi v1 hanno lo stesso significato di prima.&lt;br /&gt;
La v2 aggiunge sintassi nuova; &#039;&#039;&#039;ogni scenario ha nel JSON il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (elenco di tag,&lt;br /&gt;
vuoto se usa solo la v1; vedi sotto) così un motore parziale può rifiutare uno scenario con un&lt;br /&gt;
errore esplicito invece di generare mani sbagliate. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[].context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è sempre presente&lt;br /&gt;
(array, eventualmente vuoto).&lt;br /&gt;
Le definizioni normative (cosa è una fermata, i punti totali, le perdenti...) e&lt;br /&gt;
l&#039;architettura del motore sono in &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_ENGINE_SPEC.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Macro di scrittura (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@NOME=v1,v2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) — risolte dal parser, il motore non le vede ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S  1${M}: opener ${M}:5+ hcp:12-21; responder ${M}:3+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Genera due scenari (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sostituendo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;${M}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ovunque, etichetta compresa.&lt;br /&gt;
Più prefissi fanno il prodotto cartesiano (max 64 scenari): &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S @N=15-17,12-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
I valori possono essere intervalli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp:${N}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): servono anche come parametri del&lt;br /&gt;
sistema (SA 15-17 contro 14-16).&lt;br /&gt;
&lt;br /&gt;
=== Semi variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b $c $d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Un seme &amp;quot;da scegliere&amp;quot; condiviso da più posizioni dello stesso scenario. Ogni&lt;br /&gt;
variabile è un seme diverso dalle altre. Dominio dichiarato a livello di scenario&lt;br /&gt;
(prima delle posizioni):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Landy: $a=M $b=any  opener hcp:12-21 ; opp1 $a:5+ $b:4+ ; responder $a:0-2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nobili, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=m&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; minori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (default) qualunque, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SH&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; insieme esplicito.&lt;br /&gt;
Una variabile non dichiarata vale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutti i semi). Si usano al posto di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lunghezza), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$ahcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=KQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:$aQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;gt;$b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Differisce da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che vale per una sola posizione).&lt;br /&gt;
JSON: lo stesso dizionario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ... ma con chiave &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
a livello di scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;vars&amp;quot;: {&amp;quot;$a&amp;quot;: [&amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;]}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Controlli, carte chiave, carte precise ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Token&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings:1-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens:0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| numero di assi / re / dame nella mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| controlli (A=2, K=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H2-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte chiave con atout H: i 4 assi + il Re di H (0-5)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:S10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| possiede quella carta precisa&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NON possiede quella carta&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ha / non ha una fermata nel seme (definizione in SPEC)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards: {&amp;quot;H&amp;quot;: Range}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held: [&amp;quot;HQ&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_not_held: [&amp;quot;SK&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers: {&amp;quot;S&amp;quot;: 1, &amp;quot;H&amp;quot;: 0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(1 = deve averla, 0 = non deve averla).&lt;br /&gt;
&lt;br /&gt;
=== Punti e perdenti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti totali (PO + 1 per ogni carta oltre la quarta in ogni seme),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti distribuzione (PO + 3 chicane + 2 singolo + 1 doubleton),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; perdenti (Losing Trick Count). A livello di scenario: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(PO della coppia dichiarante), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defhcp:0-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (coppia avversaria), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairtp:26+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range) nella posizione; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp: {&amp;quot;declarer&amp;quot;: R, &amp;quot;defense&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp: {&amp;quot;declarer&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nello scenario.&lt;br /&gt;
&lt;br /&gt;
=== Confronti tra semi e forme precise ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
H&amp;gt;S   H&amp;gt;=S   H&amp;lt;S   H&amp;lt;=S   H==S   $a&amp;gt;$b      — confronto di lunghezze nella stessa mano&lt;br /&gt;
longest:H                                      — H è tra i semi più lunghi (pari merito ammesso)&lt;br /&gt;
shape:5-4-x-x   shape:5422   shape:54xx        — lunghezze ordinate in modo decrescente, x = qualsiasi&lt;br /&gt;
shape:semi_balanced                            — 5422 e 6322 (si aggiunge alle classi esistenti)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare: [{&amp;quot;left&amp;quot;:&amp;quot;H&amp;quot;,&amp;quot;op&amp;quot;:&amp;quot;&amp;gt;=&amp;quot;,&amp;quot;right&amp;quot;:&amp;quot;S&amp;quot;}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest: [&amp;quot;H&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern: &amp;quot;54xx&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Alternative e negazioni nella stessa mano: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener any(S:4+ hcp:12+, H:4+)   not(D:6+)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano soddisfa &#039;&#039;&#039;almeno una&#039;&#039;&#039; delle alternative (separate da virgola;&lt;br /&gt;
ogni alternativa è una congiunzione di token). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano non soddisfa&lt;br /&gt;
&#039;&#039;&#039;nessuna&#039;&#039;&#039; delle alternative. Si possono scrivere più gruppi (si combinano in AND);&lt;br /&gt;
niente annidamenti.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any: [[altA, altB], ...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lista di gruppi; ogni alternativa è un oggetto&lt;br /&gt;
con gli stessi campi di una posizione), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not: [altA, altB]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Contesto dello scenario ===&lt;br /&gt;
&lt;br /&gt;
Token prima delle posizioni: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (frequenza relativa, 1-100, default 1),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul:none&amp;amp;#124;us&amp;amp;#124;them&amp;amp;#124;both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = apertore+rispondente),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction:1SA,P,2C,P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (licite, notazione BridgeCards; SA = NT), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract:4H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (int) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context: {&amp;quot;dealer&amp;quot;:..,&amp;quot;vul&amp;quot;:..,&amp;quot;auction&amp;quot;:[..],&amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;,&amp;quot;declarer&amp;quot;:..,&amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Il motore deve usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando li espone (per la numerazione del tavolo) e,&lt;br /&gt;
se c&#039;è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, la carta deve stare nella mano dell&#039;attaccante (a sinistra del&lt;br /&gt;
dichiarante) e rispettare i vincoli di quella mano.&lt;br /&gt;
&lt;br /&gt;
=== Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (has/lacks),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (aces/kings/queens/controls/kc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tp/dp/ltc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (confronti, longest), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non compaiono: sono già espanse.&lt;br /&gt;
&lt;br /&gt;
=== Avvisi di parsing (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando un frammento del DSL non è stato&lt;br /&gt;
capito e quindi &#039;&#039;&#039;scartato&#039;&#039;&#039;: nome di posizione sbagliato, token sconosciuto o con valore&lt;br /&gt;
non valido (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:5&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=Kx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:4-5-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), token di scenario dopo le posizioni, posizione&lt;br /&gt;
definita due volte, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su opener/responder, gruppo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con alternative non&lt;br /&gt;
valide (in tal caso &#039;&#039;&#039;l&#039;intero gruppo è ignorato&#039;&#039;&#039;, mai applicato a metà). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate.valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è 1&lt;br /&gt;
solo se non ci sono né &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; né &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Un motore non deve generare se ci sono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Limiti (oltre i quali il parser avvisa e tronca): 60.000 caratteri di input, 200 scenari, 6&lt;br /&gt;
prefissi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, 64 valori per macro, 64 scenari per espansione, 8 gruppi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e 16 alternative&lt;br /&gt;
per posizione. Le etichette non possono contenere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Struttura JSON di uno scenario ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typescript&amp;quot;&amp;gt;&lt;br /&gt;
interface Scenario {&lt;br /&gt;
  label: string;           // Etichetta (es. &amp;quot;1H-4C&amp;quot;), vuota se non specificata&lt;br /&gt;
  positions: {&lt;br /&gt;
    [posName: string]: Position;  // &amp;quot;opener&amp;quot;, &amp;quot;responder&amp;quot;, &amp;quot;opp1&amp;quot;, &amp;quot;opp2&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  fit: FitConstraint[];    // Vincoli di fit (array, può essere vuoto)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Position {&lt;br /&gt;
  suit_patterns?: {         // Pattern regex-like normalizzati: {&amp;quot;S&amp;quot;:[{&amp;quot;cards&amp;quot;:&amp;quot;AKQ&amp;quot;,&amp;quot;low_min&amp;quot;:1,&amp;quot;low_max&amp;quot;:1}]}&lt;br /&gt;
    [suit: string]: { cards: string; low_min: number; low_max: number | null }[];&lt;br /&gt;
  };&lt;br /&gt;
  suit_cards?: { [suit: string]: string };  // Onori esatti, es. {&amp;quot;S&amp;quot;:&amp;quot;KJT&amp;quot;}; &amp;quot;&amp;quot; = nessuna carta alta&lt;br /&gt;
  suits?: {                // Vincoli lunghezza seme (solo semi esplicitati)&lt;br /&gt;
    [suit: string]: Range; // &amp;quot;S&amp;quot;, &amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;C&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  hcp?: Range;             // HCP totali&lt;br /&gt;
  suit_hcp?: {             // HCP per seme specifico&lt;br /&gt;
    [suit: string]: Range;&lt;br /&gt;
  };&lt;br /&gt;
  x?: Range;               // Lunghezza seme wildcard&lt;br /&gt;
  x_hcp?: Range;           // HCP seme wildcard&lt;br /&gt;
  shape?: string;          // Shape class: &amp;quot;balanced&amp;quot;, &amp;quot;one_suiter&amp;quot;, etc.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Range {&lt;br /&gt;
  min: number;&lt;br /&gt;
  max: number | null;      // null = nessun limite superiore&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface FitConstraint {&lt;br /&gt;
  suit: string | null;      // &amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;,&amp;quot;D&amp;quot;,&amp;quot;C&amp;quot; o null&lt;br /&gt;
  suit_class: string | null; // &amp;quot;major&amp;quot;, &amp;quot;minor&amp;quot; o null&lt;br /&gt;
  min: number;              // Numero minimo di carte (es. 8)&lt;br /&gt;
  pair: string;             // &amp;quot;declarer&amp;quot; o &amp;quot;defense&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logica per il generatore ==&lt;br /&gt;
&lt;br /&gt;
=== Algoritmo base ===&lt;br /&gt;
&lt;br /&gt;
Per ogni scenario:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Scegli lo scenario&#039;&#039;&#039;: random tra quelli disponibili, oppure lascia scegliere all&#039;utente&lt;br /&gt;
# &#039;&#039;&#039;Risolvi wildcard&#039;&#039;&#039;:&lt;br /&gt;
#* Se una posizione ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scegli un seme casuale tra quelli non esplicitamente vincolati&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si applica allo stesso seme scelto per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Risolvi fit&#039;&#039;&#039;:&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è specificato, entrambi i compagni devono avere un totale &amp;gt;= &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in quel seme&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit_class&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;quot;major&amp;quot;, scegli tra H e S; se &amp;quot;minor&amp;quot;, tra D e C&lt;br /&gt;
#* Se entrambi sono null, scegli un seme qualsiasi&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.pair&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; indica quale coppia: &amp;quot;declarer&amp;quot; (opener+responder) o &amp;quot;defense&amp;quot; (opp1+opp2)&lt;br /&gt;
# &#039;&#039;&#039;Genera le mani&#039;&#039;&#039;:&lt;br /&gt;
#* Per ogni posizione, genera una mano che rispetti tutti i vincoli&lt;br /&gt;
#* I semi senza vincoli vengono riempiti casualmente&lt;br /&gt;
#* Il totale delle carte per mano deve essere esattamente 13&lt;br /&gt;
#* Il totale delle carte per seme (tutte e 4 le mani) deve essere esattamente 13&lt;br /&gt;
# &#039;&#039;&#039;Posizioni non menzionate&#039;&#039;&#039;: se uno scenario non menziona &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, distribuisci le carte rimanenti casualmente tra gli avversari&lt;br /&gt;
&lt;br /&gt;
=== Priorità dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Vincoli di fit (cross-posizione) — determinano la distribuzione di base&lt;br /&gt;
# Vincoli di seme specifico (S:, H:, D:, C:) — limitano i singoli semi&lt;br /&gt;
# Vincoli wildcard (x:) — dopo aver fissato i semi specifici&lt;br /&gt;
# Vincoli HCP (hcp:, Shcp:, xhcp:) — filtro finale&lt;br /&gt;
# Shape class (shape:) — validazione della forma complessiva&lt;br /&gt;
&lt;br /&gt;
=== Gestione di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Quando &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, non c&#039;è limite superiore esplicito. I limiti fisici&lt;br /&gt;
del bridge si applicano comunque:&lt;br /&gt;
* Massimo 13 carte per seme (tutte e 4 le mani)&lt;br /&gt;
* Massimo 13 carte per mano&lt;br /&gt;
* Massimo 10 HCP per seme (A+K+Q+J = 4+3+2+1)&lt;br /&gt;
* Massimo 37 HCP per mano (raro ma teoricamente possibile con tutti gli onori)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Esempi completi ==&lt;br /&gt;
&lt;br /&gt;
=== Splinter (tutti gli scenari specifici) ===&lt;br /&gt;
&lt;br /&gt;
DSL nel template wiki:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1H-4D: opener H:5+ hcp:12-21; responder H:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1H-4S: opener H:5+ hcp:12-21; responder H:4+ S:0-1 Shcp:0 hcp:10-15 //&lt;br /&gt;
1S-4C: opener S:5+ hcp:12-21; responder S:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1S-4D: opener S:5+ hcp:12-21; responder S:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1S-4H: opener S:5+ hcp:12-21; responder S:4+ H:0-1 Hhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Splinter (compatto con fit e wildcard) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
dopo 1H: fit:H8+ opener H:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15 //&lt;br /&gt;
dopo 1S: fit:S8+ opener S:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stayman ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit a cuori: fit:H8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder H:4+ hcp:8+ //&lt;br /&gt;
fit a picche: fit:S8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder S:4+ hcp:8+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contro informativo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
base: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; responder hcp:0-8 //&lt;br /&gt;
con intervento: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; opp2 hcp:8+ x:5+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preempt 3-a-livello ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener H:7+ x:0-1 hcp:5-10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overcall con fit avversari ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
overcall semplice: opener hcp:12-21 x:5+; opp1 hcp:10+ x:5+; opp2 fit:8+ //&lt;br /&gt;
con barrage: opener hcp:12-21 x:5+; opp1 hcp:6-10 x:6+; opp2 fit:9+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Note implementative ==&lt;br /&gt;
&lt;br /&gt;
* L&#039;API è read-only, non richiede token CSRF&lt;br /&gt;
* L&#039;accesso anonimo è abilitato di default (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;BridgeShapeAllowAnonymous: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) perché i dati sono pubblici e i tool esterni ne hanno bisogno&lt;br /&gt;
* Il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella risposta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contiene la stringa DSL originale, utile per debug&lt;br /&gt;
* L&#039;azione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; permette di testare stringhe DSL senza creare pagine wiki&lt;br /&gt;
* I calcoli HCP usano la scala standard: A=4, K=3, Q=2, J=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=2005</id>
		<title>Progetto:BridgeShape Motore e frontend</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=2005"/>
		<updated>2026-10-28T07:05:32Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Link a Editor e Laboratorio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]] · [[Progetto:BridgeShape Smazzate di gioco|Smazzate di gioco]] · [[Progetto:BridgeShape Editor e Laboratorio|Editor e Laboratorio]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Specifica del motore di smazzate e del frontend (per Play) =&lt;br /&gt;
&lt;br /&gt;
Destinatario: il team/sessione di &#039;&#039;&#039;Play&#039;&#039;&#039; (generatore di smazzate e relativo frontend).&lt;br /&gt;
Obiettivo: realizzare un &#039;&#039;&#039;motore completo&#039;&#039;&#039; che generi mani per &#039;&#039;qualsiasi&#039;&#039; scenario&lt;br /&gt;
descritto nelle pagine di BridgePedia, e un &#039;&#039;&#039;frontend&#039;&#039;&#039; per consultare gli scenari,&lt;br /&gt;
generare, creare e gestire smazzate.&lt;br /&gt;
&lt;br /&gt;
Documenti collegati (leggere in quest&#039;ordine):&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_GENERATOR_API.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; — riferimento della sintassi (DSL v1 + v2) e del JSON dell&#039;API.&lt;br /&gt;
# &#039;&#039;&#039;questo file&#039;&#039;&#039; — semantica normativa, architettura del motore, test di conformità, specifica del frontend, piano di consegna.&lt;br /&gt;
# Wiki: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Progetto:BridgeShape API&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; le pagine di convenzione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (elenco: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Fonte di verità del contratto: l&#039;API &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;action=bridgeshape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di https://bridgepedia.it.&lt;br /&gt;
Se questo documento e l&#039;API divergono vale l&#039;API; segnalatelo a BridgePedia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Contratto, versioni e compatibilità ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Elemento&lt;br /&gt;
! Dove&lt;br /&gt;
! Uso&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| risposta di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| oggi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Cambia solo con modifiche non retrocompatibili&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios[].requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| tag delle capacità richieste dallo scenario (§1.1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| contraddizioni semantiche: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| frammenti del DSL scartati dal parser: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| testo leggibile per scenario, tradotto (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang=it&amp;amp;#124;en&amp;amp;#124;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1/0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Regole di compatibilità:&lt;br /&gt;
&lt;br /&gt;
* I campi nuovi compaiono &#039;&#039;&#039;solo se usati&#039;&#039;&#039;: un motore v1 continua a funzionare sulle pagine v1.&lt;br /&gt;
* Campi sconosciuti: ignorarli &#039;&#039;&#039;non&#039;&#039;&#039; è permesso se compaiono in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Se il motore non supporta un tag di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, deve rifiutare lo scenario con codice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (e nome del tag) e il frontend deve mostrarlo come &amp;quot;non ancora generabile&amp;quot;, non nasconderlo.&lt;br /&gt;
* Il booleano nel JSON è sempre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (MediaWiki rimuove i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;false&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Tutte le chiavi di seme sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure una variabile &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;..&amp;quot;$d&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tag&lt;br /&gt;
! Costrutti&lt;br /&gt;
! Impatto sul motore&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| assegnazione di onori precisi&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~AKQ.&amp;amp;#124;A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| alternative di mano nel seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| seme scelto a runtime, condiviso tra posizioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| filtro/vincolo sulla mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte fisse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces kings queens controls kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| conteggi di onori&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp dp ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| punteggi derivati&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp pairtp defhcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| vincolo sulla coppia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| relazioni tra lunghezze&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma ordinata&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| disgiunzioni e negazioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer vul auction contract declarer lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| metadati e carta d&#039;attacco&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scelta ponderata dello scenario&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono già espanse dal parser (non compaiono mai).&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Endpoint consigliati lato Play ===&lt;br /&gt;
&lt;br /&gt;
Il motore deve esporre (nomi indicativi; l&#039;importante è la semantica):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
POST /api/deals/generate&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;source&amp;quot;: { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot;, &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot; }      // oppure { &amp;quot;dsl&amp;quot;: &amp;quot;...&amp;quot; }&lt;br /&gt;
          | { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot; },                           // scenario scelto per peso&lt;br /&gt;
  &amp;quot;count&amp;quot;: 10,                                                // 1..100&lt;br /&gt;
  &amp;quot;seed&amp;quot;: 12345,                                              // opzionale, riproducibilità&lt;br /&gt;
  &amp;quot;fixed&amp;quot;: { &amp;quot;opener&amp;quot;: &amp;quot;SAK2.H.D.C&amp;quot;, &amp;quot;responder&amp;quot;: &amp;quot;...&amp;quot; },    // carte/mani già fissate (§5.6)&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;it&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
→ 200 { &amp;quot;seed&amp;quot;:..., &amp;quot;deals&amp;quot;:[ {&lt;br /&gt;
        &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot;, &amp;quot;index&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;dealer&amp;quot;: &amp;quot;opener&amp;quot;, &amp;quot;vul&amp;quot;: &amp;quot;none&amp;quot;,&lt;br /&gt;
        &amp;quot;hands&amp;quot;: { &amp;quot;opener&amp;quot;:&amp;quot;AK2.QJ53.K84.T65&amp;quot;, &amp;quot;responder&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp1&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp2&amp;quot;:&amp;quot;...&amp;quot; },&lt;br /&gt;
        &amp;quot;bindings&amp;quot;: { &amp;quot;$a&amp;quot;: &amp;quot;H&amp;quot;, &amp;quot;x:opener&amp;quot;: &amp;quot;D&amp;quot; },          // come sono state risolte variabili e jolly&lt;br /&gt;
        &amp;quot;pbn&amp;quot;: &amp;quot;[Deal \&amp;quot;N:...\&amp;quot;]&amp;quot;, &amp;quot;lin&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
        &amp;quot;explanation&amp;quot;: { &amp;quot;opener&amp;quot;: [&amp;quot;♥: 5+ carte&amp;quot;, ...], ... },   // dalle descriptions&lt;br /&gt;
        &amp;quot;stats&amp;quot;: { &amp;quot;attempts&amp;quot;: 412, &amp;quot;ms&amp;quot;: 38 }&lt;br /&gt;
  } ] }&lt;br /&gt;
→ 422 { &amp;quot;code&amp;quot;: &amp;quot;...&amp;quot;, &amp;quot;reasons&amp;quot;: [ {&amp;quot;code&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;position&amp;quot;:&amp;quot;opp1&amp;quot;, &amp;quot;detail&amp;quot;:&amp;quot;...&amp;quot;} ] }&lt;br /&gt;
GET  /api/deals/capabilities  → { &amp;quot;dslVersion&amp;quot;: 2, &amp;quot;supports&amp;quot;: [&amp;quot;suit_cards&amp;quot;, ...] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Posizioni → sedi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Nord per default; il motore ruota in base a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; solo&lt;br /&gt;
per la numerazione/PBN; i vincoli restano sempre in termini di ruoli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a sinistra dell&#039;apertore, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a destra).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Definizioni normative ==&lt;br /&gt;
&lt;br /&gt;
Il motore e il frontend devono usare &#039;&#039;&#039;esattamente&#039;&#039;&#039; queste definizioni (le descrizioni in&lt;br /&gt;
italiano dell&#039;API le presuppongono).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Carte&#039;&#039;&#039;: A K Q J 10 9 8 7 6 5 4 3 2. Nei vincoli &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 10. &amp;quot;Carte basse&amp;quot; = 8..2.&lt;br /&gt;
* &#039;&#039;&#039;PO / HCP&#039;&#039;&#039;: A=4, K=3, Q=2, J=1. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ecc. = PO nel solo seme.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni e coppie&#039;&#039;&#039;: coppia dichiarante = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; difesa = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Senso di gioco: opener → opp1 → responder → opp2 (orario). Lo stesso per l&#039;attaccante: siede a sinistra del dichiarante (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = opener → attacca opp1; responder → opp2; opp1 → responder; opp2 → opener).&lt;br /&gt;
* &#039;&#039;&#039;Forma ordinata&#039;&#039;&#039;: le 4 lunghezze in ordine decrescente (es. 5431).&lt;br /&gt;
* &#039;&#039;&#039;Classi di forma&#039;&#039;&#039; (possono sovrapporsi; le pagine oggi usano solo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;):&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 4333, 4432, 5332.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 5422, 6322.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;one_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: seme più lungo ≥ 6 e secondo ≤ 3.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;two_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: i due semi più lunghi hanno entrambi ≥ 4 carte e insieme ≥ 9 (5-4, 6-4, 5-5, ...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;three_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: tre semi ≥ 4 (4441, 5440, 4450...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun vincolo. Se la vostra implementazione attuale differisce, allineatela a questa o segnalate la differenza.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;54xx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la forma ordinata deve corrispondere cifra per cifra; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = qualsiasi.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la lunghezza di H è ≥ di ogni altro seme (pari merito ammesso).&lt;br /&gt;
* &#039;&#039;&#039;Confronti&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A op B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: sulle lunghezze dei due semi nella stessa mano; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; uguali.&lt;br /&gt;
* &#039;&#039;&#039;Controlli&#039;&#039;&#039;: A=2, K=1 (le dame non contano). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; somma sulla mano.&lt;br /&gt;
* &#039;&#039;&#039;Carte chiave per l&#039;atout T&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): numero di assi (0-4) + 1 se possiede il Re di T. Valori 0-5. La Dama di atout si esprime con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:TQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Fermata&#039;&#039;&#039; nel seme X (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): possiede almeno una tra: A; Kx (Re con ≥ 2 carte nel seme); Qxx (Dama con ≥ 3); Jxxx (Fante con ≥ 4). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessuna di queste.&lt;br /&gt;
* &#039;&#039;&#039;Punti totali &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + (per ogni seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max(0, lunghezza − 4)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Punti distribuzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + 3 per ogni chicane + 2 per ogni singolo + 1 per ogni doubleton.&lt;br /&gt;
* &#039;&#039;&#039;Perdenti &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (Losing Trick Count classico): per ogni seme con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;n&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m = min(n,3)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; perdenti del seme = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m − [A] − [K e n≥2] − [Q e n≥3]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; somma sui 4 semi (seme vuoto = 0). Tabella di controllo: x=1, A=0, K=1, Q=1; xx=2, Ax=1, Kx=1, Qx=2, AK=0, AQ=1, KQ=1; AKQ=0, AKx=1, AQx=1, KQx=1, Axx=2, Kxx=2, Qxx=2, xxx=3. (Correzione: la formula precedente &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m − #A,K,Q&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contava anche K e Q secchi o Q doppia.)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): tra A K Q J 10 9 possiede &#039;&#039;esattamente&#039;&#039; quelle elencate; 8..2 liberi. Stringa vuota = nessuna carta alta. Gli onori elencati sono esclusi dalle altre mani solo per quel che riguarda la proprietà: ogni carta ha un unico proprietario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): una sola alternativa (scelta a caso, uniformemente tra quelle compatibili con gli altri vincoli) descrive tutta la mano in quel seme: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + tra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte basse (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = illimitato, ma ≤ 13 − len(cards)).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (jolly di posizione): un seme scelto a caso tra quelli &#039;&#039;non&#039;&#039; vincolati esplicitamente in quella posizione. Dentro una foglia di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; il jolly vede &#039;&#039;&#039;solo i semi nominati nella foglia&#039;&#039;&#039;; un seme nominato soltanto in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non è escluso da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si riferisce allo stesso seme. Il jolly &#039;&#039;&#039;non&#039;&#039;&#039; è condiviso con altre posizioni.&lt;br /&gt;
* &#039;&#039;&#039;Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: a inizio generazione ogni variabile usata riceve un seme dal proprio dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, default tutti e quattro). Variabili diverse hanno &#039;&#039;&#039;semi diversi&#039;&#039;&#039;; una variabile non dichiarata ha dominio completo. Una variabile può coincidere con un seme nominato esplicitamente (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): se non è voluto, restringere il dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SD&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La scelta è uniforme tra le assegnazioni che rendono lo scenario soddisfacibile.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: somma delle lunghezze dei due compagni nel seme (o in qualunque seme del tipo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;major&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/ &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;minor&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, a scelta del motore, uniformemente tra i semi che soddisfano il vincolo).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la mano soddisfa almeno una alternativa. &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: non ne soddisfa nessuna. Più gruppi → AND. Dentro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono gli stessi campi di una posizione (senza &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not/fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp.declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; = PO(opener)+PO(responder); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defense&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = PO(opp1)+PO(opp2). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: somma &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni non nominate&#039;&#039;&#039;: ricevono le carte rimanenti a caso (nessun vincolo); non applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; implicito.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: probabilità relativa di scelta dello scenario quando non è scelto dall&#039;utente (default 1). Non influenza la generazione dentro lo scenario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: metadati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = coppia dichiarante) vanno riportati nell&#039;output (PBN/LIN) e mostrati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è la sequenza da mostrare/verificare (notazione BridgeCards: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;XX&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1NT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: vedi §5.7.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Architettura consigliata del motore ==&lt;br /&gt;
&lt;br /&gt;
Pipeline per ogni mano richiesta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
parse risposta API → controllo requires/errors/warnings&lt;br /&gt;
 → scelta scenario (utente | peso)&lt;br /&gt;
 → ASSEGNAZIONE SIMBOLICA   : variabili $a.., jolly x:, fit, alternative any()/S~, pattern di forma&lt;br /&gt;
 → MATRICE DELLE LUNGHEZZE  : 4 posizioni × 4 semi (somme 13 per riga e per colonna)&lt;br /&gt;
 → ASSEGNAZIONE DELLE CARTE : carte fissate/vincolate, poi resto casuale&lt;br /&gt;
 → RIPARAZIONE PUNTI        : scambi mirati per entrare negli intervalli PO/tp/dp/ltc/controlli&lt;br /&gt;
 → VERIFICA FINALE          : valutazione indipendente di TUTTI i vincoli sulla smazzata completa&lt;br /&gt;
 → output + spiegazione&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punti chiave:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Verifica finale indipendente&#039;&#039;&#039; (il &amp;quot;giudice&amp;quot;): una funzione pura &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies(deal, scenario, bindings)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che valuta ogni vincolo dalle definizioni di §2. Ogni smazzata emessa deve passarla. Questa funzione è anche la base dei test e del pulsante &amp;quot;verifica&amp;quot; del frontend.&lt;br /&gt;
# &#039;&#039;&#039;Costruzione, non solo scarto.&#039;&#039;&#039; Il rejection sampling puro non regge scenari stretti (es. Gran rever nel Multirever, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con coppia 25+ PO). Costruire prima la matrice delle lunghezze con propagazione dei vincoli (backtracking con limiti per riga/colonna), poi assegnare le carte onore per posizione secondo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;..., infine le basse.&lt;br /&gt;
# &#039;&#039;&#039;Riparazione PO&#039;&#039;&#039;: dopo l&#039;assegnazione, se i PO (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, controlli, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sono fuori intervallo, scambiare due carte tra due mani preservando lunghezze e vincoli &#039;&#039;rigidi&#039;&#039; (carte fissate, pattern). Ricerca locale con budget; poi nuovo tentativo dall&#039;inizio.&lt;br /&gt;
# &#039;&#039;&#039;Uniformità&#039;&#039;&#039;: l&#039;obiettivo è una distribuzione quasi uniforme tra le smazzate che soddisfano lo scenario. Le euristiche di costruzione introducono distorsioni: misuratele (§7.3) e non dichiarate &amp;quot;uniformi&amp;quot; se non lo sono.&lt;br /&gt;
# &#039;&#039;&#039;Budget e fallimenti&#039;&#039;&#039;: limite di tempo (oggi 2,5 s CPU/mano), massimo tentativi, e diagnosi. Su fallimento restituire 422 con i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di §6, mai una smazzata che viola i vincoli.&lt;br /&gt;
# &#039;&#039;&#039;Riproducibilità&#039;&#039;&#039;: stesso &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + stessa versione del DSL → stessa smazzata. Salvare nel record &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; della pagina se disponibile.&lt;br /&gt;
# &#039;&#039;&#039;Concorrenza e cache&#039;&#039;&#039;: cache del JSON dell&#039;API per pagina con TTL breve (60 s) e rivalidazione sulla &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; mai servire DSL non validato.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Ordine di risoluzione dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, jolly &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (decidono &#039;&#039;quali&#039;&#039; semi).&lt;br /&gt;
# Alternative: scegliere un ramo per ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (escludendo i rami impossibili con i vincoli già noti); applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come vincoli di esclusione.&lt;br /&gt;
# Lunghezze (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Carte precise (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held/not_held&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Conteggi (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Punteggi derivati (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Verifica finale.&lt;br /&gt;
&lt;br /&gt;
Un vincolo è &amp;quot;rigido&amp;quot; se riguarda carte/lunghezze fissate (1-4); &amp;quot;morbido&amp;quot; se si ripara per scambio (5-6).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Semantica delle combinazioni delicate ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è già espanso in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun trattamento speciale (il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; serve solo alla descrizione). Una difesa quiet &#039;&#039;&#039;riduce&#039;&#039;&#039; il margine PO per la coppia dichiarante: verificare la compatibilità prima di costruire (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: devono essere coerenti; l&#039;API segnala le contraddizioni evidenti.&lt;br /&gt;
* Una carta (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) può comparire in una sola posizione; due posizioni con la stessa carta sono un errore di validazione, non un caso da risolvere a caso.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro una posizione con variabili: le variabili si legano &#039;&#039;&#039;prima&#039;&#039;&#039;, poi si sceglie il ramo.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: escludere dall&#039;insieme di alternative, non solo filtrare a posteriori.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono sulle lunghezze finali (dopo il bind delle variabili).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la carta deve stare nella mano dell&#039;attaccante (§2) e quella mano deve soddisfare i suoi vincoli (es. se ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SJ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è coerente, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; no).&lt;br /&gt;
&lt;br /&gt;
=== Chiarimenti (concordati con Play) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la sequenza parte dal &#039;&#039;&#039;mazziere&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;); il primo token è la sua chiamata. Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; manca, l&#039;asta è solo descrittiva e non si verifica nulla. Nella v2 l&#039;asta e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono &#039;&#039;&#039;informativi&#039;&#039;&#039;: il motore non deve ricavarne vincoli sulle mani.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: non deve discendere dall&#039;asta (non verificata). Serve a stabilire chi attacca (vedi §2) e quindi a validare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: array di &#039;&#039;&#039;stringhe&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;&amp;lt;etichetta scenario o &#039;scenario #N&#039;&amp;gt;: &amp;lt;messaggio in inglese&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, senza codici né struttura. Il motore li riporta così come sono (codice proprio &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl_errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, §6). Un formato strutturato (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;code&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenario&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;position&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) è una possibile evoluzione: lo si introdurrebbe come campo nuovo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errorDetails&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, senza toccare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: oggi un elemento per scenario con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (testo per posizione) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &#039;&#039;&#039;non esiste un id per singolo vincolo&#039;&#039;&#039;. Se il frontend lo richiede, si aggiungerà un campo additivo (da concordare, §11).&lt;br /&gt;
* &#039;&#039;&#039;«Uniforme»&#039;&#039;&#039; (variabili, jolly, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): tra le assegnazioni di semi che rendono lo scenario soddisfacibile, ciascuna ha uguale probabilità (a meno di tolleranza statistica nei test: ±5 % su 1000 estrazioni per due valori, vedi caso 3). Non implica uniformità sulle carte o sulle mani.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Funzionalità del motore (elenco completo da realizzare) ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Core (parità v1) — già in produzione, da conservare ===&lt;br /&gt;
Lunghezze, PO totali/per seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(espanso), 422 con ragioni, tetto 2,5 s.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Nuove funzioni DSL v2 ===&lt;br /&gt;
Tutte le righe di §1.1. Priorità di consegna in §9.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Mani multiple e serie ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;count&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ≤ 100 per richiesta; opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;distinct: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nessuna mano duplicata nella serie);&lt;br /&gt;
opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balance: &amp;quot;round_robin&amp;quot; &amp;amp;#124; &amp;quot;weighted&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per distribuire gli scenari della stessa convenzione.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Spiegazione per mano ===&lt;br /&gt;
Per ogni smazzata: per posizione, elenco dei vincoli con esito (✓) e valore effettivo&lt;br /&gt;
(&amp;quot;♥: 5 carte, richiesto 5+&amp;quot;), e i &#039;&#039;&#039;binding&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x di opener = ♦&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Serve al frontend.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 Verifica di una smazzata data ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con quattro mani e una &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → elenco di vincoli soddisfatti/violati.&lt;br /&gt;
Usa lo stesso giudice del §3. Serve a: smazzate inserite a mano, correzione in aula, test.&lt;br /&gt;
&lt;br /&gt;
=== 5.6 Mani parzialmente fissate (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
Accettare mani complete o parziali (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;opener&amp;quot;: &amp;quot;SAK2.&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o carte singole) e completare il resto&lt;br /&gt;
rispettando lo scenario. Se impossibile → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 5.7 Contesto di gioco della carta ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il motore garantisce che la carta d&#039;attacco sia nella mano giusta e&lt;br /&gt;
fornisce nel risultato &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;play: { &amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;, &amp;quot;declarer&amp;quot;:&amp;quot;responder&amp;quot;, &amp;quot;leader&amp;quot;:&amp;quot;opp2&amp;quot;, &amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot; }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
(Il gioco successivo, oltre la prima carta, non è nel DSL: per Segnali e Attacchi la prima carta e le&lt;br /&gt;
mani bastano a mostrare la situazione.)&lt;br /&gt;
&lt;br /&gt;
=== 5.8 Statistiche ===&lt;br /&gt;
Per scenario: tasso di successo, tentativi medi, p95 ms, codici di fallimento. Esposte in&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api/deals/stats&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e inviate a BridgePedia (§8.5) per tarare i vincoli.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Codici di errore (422 e simili) ==&lt;br /&gt;
&lt;br /&gt;
Già in uso: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;exact_cards_always_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;generation_time_limit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_below_hcp_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Da aggiungere:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Codice&lt;br /&gt;
! Quando&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| lo scenario richiede un tag non supportato (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;detail&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il tag)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl_errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| l&#039;API ha restituito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (riportarli)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;variable_unsatisfiable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna assegnazione dei semi variabili rende lo scenario possibile&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contraddice lo scenario o carte duplicate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp/pairtp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibili con i limiti per posizione&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibile con la mano dell&#039;attaccante&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;no_branch_left&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; eliminano tutti i rami&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma/lunghezze incompatibili con 13 carte per mano e per seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;invalid_request&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| parametri non validi (count, seed...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni 422 porta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons: [{code, position?, detail}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; leggibili dal frontend.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Test di conformità e qualità ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Invarianti (property test, ≥ 10.000 smazzate per scenario del wiki) ===&lt;br /&gt;
* 52 carte distinte; 13 per mano; nessun duplicato.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vero per ogni smazzata emessa (il giudice &#039;&#039;&#039;non&#039;&#039;&#039; deve condividere codice con il generatore).&lt;br /&gt;
* Stesso seed → stesso risultato.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Casi minimi per costrutto (la DSL → cosa deve valere) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! #&lt;br /&gt;
! DSL&lt;br /&gt;
! Asserzione&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener S:5+ hcp:12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ♠ ≥ 5, PO in intervallo&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S opener ${M}:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| due scenari generabili (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M opener $a:5+; responder $a:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| in ogni mano: un nobile ≥5 in opener, lo stesso seme ≥3 in responder; entrambi i nobili compaiono su 1000 mani&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M $b=m opener $a:5+ $b:4+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| $a nobile, $b minore, mai lo stesso seme&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su 1000 mani&lt;br /&gt;
| tutte le mani hanno A, Kx, Qxx o Jxxx a ♠&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener nostop:S S:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna mano con A, né Kx, Qxx o Jxxx a ♠ (con 3 carte: né A, né K, né Q)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener aces:2 kc:H3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2 assi; assi + K♥ = 3 (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è impossibile: max 2+1)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener has:HQ lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Q♥ presente, K♠ assente&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener tp:20-22&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; corretto con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener ltc:6-7&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| LTC con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;=S longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| confronti rispettati; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con pari merito&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 5 e 4 come due semi più lunghi in ordine; gli altri due sommano 4&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| solo 5422 e 6322&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:5+, H:5+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| almeno un nobile ≥ 5&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener not(S:4+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessun nobile ≥ 4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:4+ hcp:12+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| rami composti&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+ ... opp1 quiet; opp2 quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| coppia ≥ 25, avversari entro i limiti quiet&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:1 ... // weight:3 ...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1000 estrazioni ~ 25%/75% (± tolleranza)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opp1 vul:both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| output con dealer/vul corretti e PBN ruotato&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder lead:SJ opp2 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| J♠ in opp2; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con Q♥ in opener&lt;br /&gt;
| opener ha Q♥ e rispetta lo scenario&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| scenario impossibile (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=AK Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
| 422 con ragione&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| scenario con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; simulato&lt;br /&gt;
| 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aggiungere come test di regressione &#039;&#039;&#039;tutti gli scenari reali&#039;&#039;&#039; delle pagine del wiki&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): per ciascuno ≥ 1000 smazzate valide entro il budget, oppure una&lt;br /&gt;
diagnosi documentata. Gli scenari più duri oggi: &#039;&#039;Multirever&#039;&#039; (Gran rever, 20 scenari) e&lt;br /&gt;
&#039;&#039;Segnale di Smith&#039;&#039; (20 scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== 7.3 Qualità statistica ===&lt;br /&gt;
Per ogni scenario del wiki misurare su 5000 mani: distribuzione delle lunghezze e dei PO nei limiti&lt;br /&gt;
consentiti, tasso di riuscita al primo tentativo, tempo p50/p95. Segnalare distorsioni evidenti&lt;br /&gt;
(es. la posizione A prende sempre i PO alti).&lt;br /&gt;
&lt;br /&gt;
=== 7.4 Prestazioni ===&lt;br /&gt;
Obiettivo: p95 &amp;lt; 300 ms per mano sugli scenari comuni; &amp;lt; 2,5 s sul peggiore. Se non si rispetta,&lt;br /&gt;
non allargare i vincoli: segnalare lo scenario a BridgePedia (§8.5) che può rivederlo.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 8. Frontend di Play ==&lt;br /&gt;
&lt;br /&gt;
Il frontend deve permettere di &#039;&#039;&#039;consultare&#039;&#039;&#039;, &#039;&#039;&#039;generare&#039;&#039;&#039;, &#039;&#039;&#039;creare&#039;&#039;&#039; e &#039;&#039;&#039;gestire&#039;&#039;&#039; smazzate.&lt;br /&gt;
Lingua: italiano, con i18n predisposta (en, fr, es, de). Tutti i testi dei vincoli vengono&lt;br /&gt;
dall&#039;API (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, parametro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): non riscriverli.&lt;br /&gt;
&lt;br /&gt;
=== 8.1 Catalogo delle convenzioni ===&lt;br /&gt;
* Elenco da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con vincoli) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutte, con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hasShape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Per ogni voce: titolo, numero di scenari, link alla pagina del wiki, stato: &#039;&#039;generabile&#039;&#039;, &#039;&#039;parzialmente generabile&#039;&#039; (alcuni scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non supportato), &#039;&#039;non generabile&#039;&#039;.&lt;br /&gt;
* Ricerca testuale; filtri per tipologia/sistema se esposti; badge &amp;quot;da verificare&amp;quot; per le traduzioni non verificate.&lt;br /&gt;
* Le 27 convenzioni senza vincoli compaiono come &amp;quot;scenari in arrivo&amp;quot; con link al wiki.&lt;br /&gt;
&lt;br /&gt;
=== 8.2 Visualizzatore di scenario ===&lt;br /&gt;
* Tabella a colonne per posizione (come la tabella del wiki): etichetta scenario, frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[i].positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (rispettare i ruoli personalizzati, es. &amp;quot;Attaccante&amp;quot;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Semi ♥ ♦ in rosso. Mostrare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come chip (tooltip con spiegazione).&lt;br /&gt;
* Pulsante &amp;quot;Mostra DSL&amp;quot; (testo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;quot;Apri la pagina nel wiki&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 8.3 Generatore ===&lt;br /&gt;
* Scelta convenzione → scenario (singolo, &amp;quot;a caso&amp;quot;, &amp;quot;tutti a rotazione&amp;quot;, pesato) → quantità (1-100) → opzioni (seed, mani distinte, nascondi avversari).&lt;br /&gt;
* Risultato: schede smazzata con 4 mani (formato BridgeCards: ♠♥♦♣, bordi, dealer, vulnerabilità), etichetta scenario, &#039;&#039;&#039;pannello &amp;quot;perché questa mano&amp;quot;&#039;&#039;&#039;: per posizione le frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con spunta, binding (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), PO/lunghezze effettive.&lt;br /&gt;
* Azioni per smazzata: rigenera, &amp;quot;blocca questa mano e rigenera le altre&amp;quot; (usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), copia link con seed, esporta PBN/LIN/immagine, aggiungi alla raccolta.&lt;br /&gt;
* Se la licita &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è presente: mostrarla con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bidding&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stile BridgeCards) o nascosta per esercizio (&amp;quot;indovina la risposta&amp;quot;).&lt;br /&gt;
* Gestione 422: messaggio per codice (§6) con suggerimento (&amp;quot;lo scenario è impossibile perché...&amp;quot;). Per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: spiegare quale capacità manca.&lt;br /&gt;
&lt;br /&gt;
=== 8.4 Editor / creazione di scenari ===&lt;br /&gt;
Due modalità sincronizzate:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Modulo guidato&#039;&#039;&#039; per posizione (Apertore, Compagno, Avv. sinistro, Avv. destro):&lt;br /&gt;
#* lunghezze per seme (slider min-max), PO totali e per seme, forma (classi + schema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* griglia carte per seme (A K Q J 10 9 + &amp;quot;basse&amp;quot;) con stati &#039;&#039;deve avere / non deve avere / indifferente&#039;&#039; che produce &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; costruttore di pattern per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con anteprima;&lt;br /&gt;
#* interruttori: fermata (per seme), assi/re/dame/controlli, carte chiave con atout, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp/dp/ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti tra semi, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come gruppi aggiungibili;&lt;br /&gt;
#* variabili di seme &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con dominio (nobili/minori/qualsiasi);&lt;br /&gt;
#* contesto: dealer, vulnerabilità, licita, contratto, attacco, peso;&lt;br /&gt;
#* avversari: pulsante &#039;&#039;&#039;quiet&#039;&#039;&#039; (e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet:max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* macro: &amp;quot;ripeti per ogni nobile / minore / seme&amp;quot; genera &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Editor testuale&#039;&#039;&#039; del DSL con evidenziazione, completamento e &#039;&#039;validazione live&#039;&#039;: chiama &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (debounce 400 ms) e mostra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con il supporto del motore). Le due modalità si convertono a vicenda (modulo → DSL è obbligatorio; DSL → modulo almeno per i costrutti elementari, il resto resta testuale).&lt;br /&gt;
&lt;br /&gt;
* Pulsante &amp;quot;Prova&amp;quot;: genera 5 mani di test dallo scenario in modifica e mostra tempi e tassi di riuscita.&lt;br /&gt;
* Salvataggio come &#039;&#039;&#039;bozza personale&#039;&#039;&#039; in Play (non scrive sul wiki). Pulsante &amp;quot;Copia per BridgePedia&amp;quot; produce la riga &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; da incollare nella pagina (gli editor del wiki fanno il resto).&lt;br /&gt;
* Libreria di &#039;&#039;&#039;modelli&#039;&#039;&#039; presi dalle convenzioni del wiki (&amp;quot;parti da Landy&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== 8.5 Retroazione verso BridgePedia ===&lt;br /&gt;
* Pulsante &amp;quot;Segnala scenario problematico&amp;quot; (lento / troppo raro / 422 / distribuzione strana) che invia: pagina, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, codice errore, statistiche (§5.8) al canale concordato (sessione/issue). Nessuna scrittura diretta sul wiki.&lt;br /&gt;
* Report periodico automatico delle statistiche di generazione per scenario.&lt;br /&gt;
&lt;br /&gt;
=== 8.6 Smazzate manuali ===&lt;br /&gt;
* Compositore: assegnare le 52 carte alle quattro mani con trascinamento o digitazione (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;AK2.QJ5.K84.T65&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), controllo duplicati, completamento casuale delle carte mancanti (opzionalmente rispettando uno scenario: usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Pulsante &amp;quot;Verifica rispetto a uno scenario&amp;quot; (§5.5) con l&#039;elenco dei vincoli soddisfatti e violati.&lt;br /&gt;
* Importa/esporta PBN, LIN, testo semplice.&lt;br /&gt;
&lt;br /&gt;
=== 8.7 Gestione delle smazzate ===&lt;br /&gt;
* Raccolte (&amp;quot;mazzi di esercizio&amp;quot;): nome, descrizione, convenzione, tag; ordinamento; duplicati evitati.&lt;br /&gt;
* Ricerca per convenzione, scenario, tag, data; filtri per vulnerabilità, dealer.&lt;br /&gt;
* Metadati salvati: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, data, autore.&lt;br /&gt;
* Note personali per smazzata; stampa di una raccolta (fogli A4 con 4 o 6 smazzate per pagina, versione &amp;quot;solo mano dell&#039;apertore&amp;quot; per esercizio).&lt;br /&gt;
* Condivisione: link con seed/raccolta, permessi (privato, gruppo, pubblico) secondo il modello utenti di Play. Esportazione in blocco (PBN).&lt;br /&gt;
* Modalità &amp;quot;esercizio di licita&amp;quot;: mostra le mani di un lato, l&#039;utente inserisce la licita, il frontend confronta con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se presente.&lt;br /&gt;
&lt;br /&gt;
=== 8.8 Requisiti trasversali ===&lt;br /&gt;
* Mobile first; tastiera accessibile; semi anche come lettere per daltonici.&lt;br /&gt;
* Nessuna dipendenza dal wiki per il rendering delle carte (usare componenti propri; stile coerente con BridgeCards).&lt;br /&gt;
* Tempi: la generazione deve mostrare avanzamento e poter essere annullata.&lt;br /&gt;
* Tracciare (analytics interni) tempi, errori e scenari più usati.&lt;br /&gt;
* Testo dei vincoli sempre da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; coerente con la lingua dell&#039;interfaccia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 9. Piano di consegna consigliato ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fase&lt;br /&gt;
! Contenuto&lt;br /&gt;
! Esito atteso&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P0 — compatibilità&#039;&#039;&#039; (subito)&lt;br /&gt;
| leggere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; esporre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; rifiutare con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; giudice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per v1&lt;br /&gt;
| nessuna smazzata errata con le pagine nuove&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P1 — core v2&#039;&#039;&#039;&lt;br /&gt;
| macro (nessun lavoro, già espanse), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, classi nuove, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scenari per Landy/Cappelletti/DONT/Smolen con forme e alternative&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P2 — variabili e carte&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; condivise tra posizioni, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has/lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces/kings/queens/controls/kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Michaels, Sputnik, Lebensohl, Blackwood/RKCB, Exclusion&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P3 — punteggi&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| sistemi a forza (Fiori forte, 2♣ forte, Gazzilli)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P4 — frontend lettura&#039;&#039;&#039;&lt;br /&gt;
| catalogo, visualizzatore, generatore con spiegazioni&lt;br /&gt;
| tutti possono provare le convenzioni&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P5 — frontend creazione&#039;&#039;&#039;&lt;br /&gt;
| editor guidato + testuale con validazione live, &amp;quot;Prova&amp;quot;, bozze&lt;br /&gt;
| gli editor creano e collaudano scenari senza il wiki&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P6 — gestione&#039;&#039;&#039;&lt;br /&gt;
| raccolte, smazzate manuali, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, esportazioni, esercizi di licita&lt;br /&gt;
| uso didattico completo&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P7 — qualità&#039;&#039;&#039;&lt;br /&gt;
| suite di conformità (§7), statistiche, report verso BridgePedia&lt;br /&gt;
| motore misurabile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni fase deve chiudersi con i test di §7 per i costrutti introdotti. BridgePedia estende le&lt;br /&gt;
pagine del wiki man mano che i tag diventano disponibili: &#039;&#039;&#039;comunicate a ogni fase la lista dei tag supportati&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) così il wiki passa dalle approssimazioni (pattern &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ai&lt;br /&gt;
costrutti nativi solo quando il motore li regge.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 10. Cosa fa BridgePedia (per non sovrapporsi) ==&lt;br /&gt;
&lt;br /&gt;
* Mantiene il DSL, il parser, le descrizioni e l&#039;API; aggiunge costrutti su richiesta motivata.&lt;br /&gt;
* Scrive e tiene aggiornati gli scenari nelle pagine delle convenzioni; le 27 mancanti saranno coperte via via con i costrutti v2.&lt;br /&gt;
* Fornisce il catalogo di ricette (come descrivere Landy, Blackwood, un attacco sotto onore...).&lt;br /&gt;
* Riceve da Play le segnalazioni di §8.5 e rivede i vincoli troppo duri.&lt;br /&gt;
&lt;br /&gt;
== 11. Decisioni aperte (da concordare con Play) ==&lt;br /&gt;
&lt;br /&gt;
# Definizione definitiva delle classi di forma (§2) rispetto a quanto già implementato.&lt;br /&gt;
# Formato di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (testo semplice vs struttura con esito per vincolo).&lt;br /&gt;
# Modello di persistenza e permessi delle raccolte (utenti Play).&lt;br /&gt;
# Canale per le segnalazioni verso BridgePedia (§8.5).&lt;br /&gt;
# Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; deve accettare anche vincoli aggiuntivi temporanei (override locali dello scenario).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Editor_e_Laboratorio&amp;diff=2004</id>
		<title>Progetto:BridgeShape Editor e Laboratorio</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Editor_e_Laboratorio&amp;diff=2004"/>
		<updated>2026-10-28T07:05:31Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Nuova pagina: Editor avanzato e Laboratorio di test BridgeShape&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]] · [[Progetto:BridgeShape Smazzate di gioco|Smazzate di gioco]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Editor avanzato e Laboratorio di test (brief per Play) =&lt;br /&gt;
&lt;br /&gt;
Integra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_ENGINE_SPEC.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; §8.4 (editor) e §5.8 (statistiche). Origine: la scrittura degli scenari&lt;br /&gt;
di &amp;quot;Gioco di eliminazione&amp;quot; (E1–E5) ha mostrato che il DSL è espressivo ma **non si vede come&lt;br /&gt;
vengono generate le mani**: gli scenari risultavano sbilanciati (es. apertore 24 PO, risponditore 5;&lt;br /&gt;
avversari a 0 PO che ricevono tutti i punti residui) e ce ne si accorge solo guardando mani a caso.&lt;br /&gt;
&lt;br /&gt;
== 1. Il DSL è abbastanza generale? Lacune da colmare ==&lt;br /&gt;
&lt;br /&gt;
Coperto bene: lunghezze, forma, PO totali/per seme, onori esatti (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=AKQJ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), pattern, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
fermate, controlli, carte chiave, LTC, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, variabili, macro, contesto (dealer, contratto, attacco).&lt;br /&gt;
&lt;br /&gt;
Lacune (in ordine di priorità):&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Nessun controllo su come si distribuisce il resto.&#039;&#039;&#039; Le carte non vincolate vanno a caso alle mani libere. Servono:&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;default-opp: realistic&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; già esistente) con soglie ragionevoli per gli avversari;&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per ogni posizione &#039;&#039;&#039;anche come intervallo &amp;quot;tipico&amp;quot;&#039;&#039;&#039; (non solo filtro);&lt;br /&gt;
#* opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;spread: even&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che, dopo i vincoli, ripartisce gli onori residui senza concentrarli in una mano.&lt;br /&gt;
# &#039;&#039;&#039;Vincoli di esito (post-filtro double-dummy)&#039;&#039;&#039;: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;makes: 4S by opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tricks: 10-11&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead-fails&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Fondamentali per le tecniche di gioco (eliminazione, messa in presa, squeeze). Opzionali, con budget di tempo; se il solver non c&#039;è → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires: dd&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Il solver va eseguito solo dopo i filtri economici.&lt;br /&gt;
# &#039;&#039;&#039;Vincoli di relazione fra mani&#039;&#039;&#039; (es. &amp;quot;i due avversari hanno insieme 8+ carte di ♥&amp;quot;, &amp;quot;atout 3-2 / 4-1 fra i difensori&amp;quot;): oggi si ottengono solo fissando le lunghezze di entrambi.&lt;br /&gt;
# &#039;&#039;&#039;Vincoli &amp;quot;morbidi&amp;quot;/pesati&#039;&#039;&#039;: preferenze (peso 0–1) invece di filtri duri, per mani più naturali senza far esplodere il tasso di rifiuto.&lt;br /&gt;
# &#039;&#039;&#039;Carte o vincoli fissati dall&#039;utente nel test&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, già in §5.6) con override temporanei.&lt;br /&gt;
&lt;br /&gt;
== 2. Editor &amp;quot;potentissimo&amp;quot; (estende §8.4) ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pannello Mani&#039;&#039;&#039; con le 4 posizioni, per ciascuna: barre min-max di lunghezze per seme, PO, griglia onori (deve / non deve / indifferente / &amp;quot;uno fra&amp;quot;), sempre sincronizzato col DSL testuale.&lt;br /&gt;
* &#039;&#039;&#039;Indicatori in tempo reale di fattibilità&#039;&#039;&#039;: mentre si modifica, calcolo esatto/rapido di: somma minimi vs 13 carte, somma minimi PO vs 40, onori richiesti in conflitto (stessa carta a due mani), stima del tasso di successo (campionamento rapido a 200 tentativi con barra di avanzamento).&lt;br /&gt;
* &#039;&#039;&#039;Avvisi di sbilanciamento&#039;&#039;&#039; (punto chiave): avvisa se la distribuzione implicita dei PO fra le mani è anomala (es. una mano ≥ 22 e il compagno ≤ 6; un avversario a 0 con l&#039;altro a ≥ 12; coppia fuori da 23–33 senza motivo) e proponi la correzione.&lt;br /&gt;
* &#039;&#039;&#039;Validazione live&#039;&#039;&#039; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (errori, avvisi, descrizioni, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Cronologia e confronto&#039;&#039;&#039;: versioni salvate, diff DSL + diff statistiche fra due versioni.&lt;br /&gt;
* &#039;&#039;&#039;Esportazione&#039;&#039;&#039;: &amp;quot;Copia per BridgePedia&amp;quot; (riga &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), JSON, link con seed.&lt;br /&gt;
* &#039;&#039;&#039;Modelli&#039;&#039;&#039; dalle convenzioni del wiki e dalle ricette (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Progetto:BridgeShape Ricette DSL&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== 3. Laboratorio di test: capire come vengono generate le mani ==&lt;br /&gt;
&lt;br /&gt;
Pulsante &amp;quot;Prova&amp;quot; → modale &amp;quot;Laboratorio&amp;quot; su N mani (default 1000, fino a 10.000, in background con&lt;br /&gt;
progresso, seed fisso riproducibile). Output:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Esito del campionamento&#039;&#039;&#039;: tasso di successo, tentativi medi/p95, tempo medio/p95, mani generate/rifiutate.&lt;br /&gt;
# &#039;&#039;&#039;Vincolo colpevole&#039;&#039;&#039;: per ogni vincolo la % di scarti che provoca (quale pezzo dello scenario rende lo scenario lento o raro).&lt;br /&gt;
# &#039;&#039;&#039;Istogrammi per posizione&#039;&#039;&#039; (apertore/compagno/avv. sx/avv. dx): PO (0–37), lunghezza per seme, forma (classi), numero di assi/re/controlli, LTC. Con &#039;&#039;&#039;linee dei limiti richiesti&#039;&#039;&#039;, media, mediana, percentili 5/95.&lt;br /&gt;
# &#039;&#039;&#039;Confronto con la base&#039;&#039;&#039;: stessi istogrammi su un mazzo non vincolato, per vedere di quanto lo scenario distorce (misura per seme: variazione rispetto al caso).&lt;br /&gt;
# &#039;&#039;&#039;Frequenza onori per mano&#039;&#039;&#039;: matrice posizione × carta (A K Q J T) con % di presenza, per scoprire concentrazioni (es. &amp;quot;ogni volta l&#039;avversario sx ha l&#039;Asso di ♦&amp;quot;).&lt;br /&gt;
# &#039;&#039;&#039;Coppia&#039;&#039;&#039;: istogramma PO della coppia, distribuzione dei fit (lunghezza d&#039;atout combinata), spaccature degli atout dei difensori (3-2, 4-1, 5-0).&lt;br /&gt;
# &#039;&#039;&#039;Test di equità&#039;&#039;&#039;: verifica che il campionamento sia uniforme sullo spazio dei vincoli (confronto tra due seed e tra metodo a rifiuto e costruttivo; chi² sulle frequenze di carte/posizioni). Segnala bias (es. carte basse sempre nella stessa mano).&lt;br /&gt;
# &#039;&#039;&#039;Se disponibile il solver&#039;&#039;&#039;: percentuale di mani in cui il contratto dichiarato si realizza, e distribuzione delle prese; elenco delle mani contro-esempio apribili con un clic.&lt;br /&gt;
# &#039;&#039;&#039;Galleria&#039;&#039;&#039;: le prime 10 mani, un clic per aprirne il perché (§5.4) e per &amp;quot;fissa e rigenera&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Report esportabile&#039;&#039;&#039; (JSON + testo) da inviare a BridgePedia (§8.5), così gli editor del wiki tarano i vincoli. Accettiamo un campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;labReport&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nello scenario problematico.&lt;br /&gt;
&lt;br /&gt;
== 4. API richieste (aggiunte a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_GENERATOR_API.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/lab&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{source, dsl, scenario, n, seed, solver?: bool}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;jobId&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api/deals/lab/{jobId}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{status, progress, success, attempts, timing, rejectBy[], histograms{}, honors{}, balance{warnings[]}, fairness{}, dd?{}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (già in §5.5) per le mani contro-esempio.&lt;br /&gt;
* Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lab&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dd&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;spread&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;relations&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;soft&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 5. Criteri di accettazione ==&lt;br /&gt;
&lt;br /&gt;
# Per ogni scenario del wiki il laboratorio parte in &amp;amp;lt; 2 s e fornisce i 10 punti sopra per N=1000 entro 30 s.&lt;br /&gt;
# Gli avvisi di sbilanciamento segnalano E2 di &amp;quot;Gioco di eliminazione&amp;quot; (24/5 PO) prima della generazione.&lt;br /&gt;
# Due esecuzioni con stesso seed danno identici istogrammi.&lt;br /&gt;
# Test di equità: nessuno scarto &amp;amp;gt; 3σ rispetto all&#039;attesa sui vincoli non esplicitati.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Progetto:BridgeShape Motore e frontend]]&lt;br /&gt;
* [[Progetto:BridgeShape API]]&lt;br /&gt;
* [[Progetto:BridgeShape Ricette DSL]]&lt;br /&gt;
* [[Gioco di eliminazione]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* Esperienza di scrittura degli scenari di Gioco di eliminazione (ProgettoBridge, Lezione 18) e specifica interna BridgeShape&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Gioco_di_eliminazione&amp;diff=2003</id>
		<title>Gioco di eliminazione</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Gioco_di_eliminazione&amp;diff=2003"/>
		<updated>2026-10-27T22:02:03Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Aggiunti scenari E3-E5 e nota di verifica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Convenzione&lt;br /&gt;
|nome=Gioco di eliminazione&lt;br /&gt;
|tipologia=Tecnica di gioco&lt;br /&gt;
|scopo=Togliere alla difesa le uscite neutre nei colori laterali, in modo che un avversario messo in presa debba muovere un colore pericoloso o giocare in taglio e scarto, evitando di dipendere dalla posizione di una carta.&lt;br /&gt;
|trigger=Contratto a colore con atout lunghi in linea e colori laterali che si possono eliminare (incassando le vincenti e tagliando le perdenti), con un colore chiave in cui la difesa, costretta a giocare per prima, ci regala una presa.&lt;br /&gt;
|risposte=1) Contare le prese sicure e le perdenti; 2) battere le atout; 3) incassare e tagliare i colori laterali; 4) mettere in presa un avversario (messa in mano); 5) lasciare alla difesa solo il colore pericoloso o il taglio e scarto.&lt;br /&gt;
|note=Alternativa alla linea di impasse o expasse: l&#039;eliminazione non dipende dalla posizione di una carta ma richiede che la difesa non abbia uscite neutre. Pagina di tecnica di gioco, non di licita: nessun tag BridgeCC applicabile.&lt;br /&gt;
|shape_constraints=E1 messa in mano a cuori: opener S:5 S=AKQJ H:2 H=x D:3 D=J C:3 C=AQ; responder S:4 S=x H:3 H=AQ D:4 D=Q C:2 C=K // E2 dama a picche evitata: opener S:2 S=AQ H:4 H=AKQ D:3 D=K C:4 C=KQJT; responder S:2 S=x H:4 H=x D:3 D=AJ C:4 C=x // E3 slam a quadri con atout 2-2: opener S:5 S=AKQ H:3 H=K D:4 D=AQ C:1 C=x; responder S:4 S=x H:3 H=A D:4 D=K C:2 C=A; opp1 S:2; opp2 S:2 // E4 taglio e scarto: opener S:5 S=KQT H:3 H=x D:2 D=K C:3 C=AQ; responder S:4 S=AJ9 H:2 H=T D:4 D=A C:3 C=x; opp1 S:2 H:4 H=AKQ D:4; opp2 S:2 // E5 sottoapertura a quadri: opener S:2 S=x H:3 H=K D:2 D=AQ C:6 C=AQT; responder S:4 S=AKQ H:4 H=Q D:2 D=x C:3 C=KJ; opp1 D:6 D=KJT H:3 H=A&lt;br /&gt;
|shape_roles=opener=Dichiarante;responder=Morto;opp1=Attaccante;opp2=Quarta mano&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;gioco di eliminazione&#039;&#039;&#039; (in inglese &#039;&#039;elimination play&#039;&#039; o &#039;&#039;strip and throw-in&#039;&#039;) è una tecnica del [[Gioco della carta (bridge)|gioco della carta]] con cui il dichiarante, in un contratto a colore, toglie uno dopo l&#039;altro i colori laterali alla difesa e poi mette in presa un avversario, che si trova costretto a giocare un colore dove regala una presa oppure a muovere in taglio e scarto.&lt;br /&gt;
&lt;br /&gt;
== Quando si usa ==&lt;br /&gt;
Si pensa all&#039;eliminazione quando:&lt;br /&gt;
* il contratto è a colore e la linea in atout è tranquilla (tipicamente le atout si battono senza problemi);&lt;br /&gt;
* resta un solo colore da giocare con difficoltà, di solito con una perdente che dipende da un impasse o da una posizione di carte;&lt;br /&gt;
* i colori laterali si possono esaurire incassando le vincenti e tagliando le piccole, in mano o al morto;&lt;br /&gt;
* un avversario può essere messo in presa senza che gli rimanga una uscita neutra.&lt;br /&gt;
&lt;br /&gt;
== Come si svolge ==&lt;br /&gt;
# &#039;&#039;&#039;Conta&#039;&#039;&#039;: si contano le prese sicure e le perdenti e si individua il colore dove la difesa può fare danno.&lt;br /&gt;
# &#039;&#039;&#039;Atout&#039;&#039;&#039;: di norma si battono le atout, per impedire alla difesa di tagliare e per mantenere il controllo.&lt;br /&gt;
# &#039;&#039;&#039;Eliminazione dei colori laterali&#039;&#039;&#039;: si incassano le vincenti dei colori laterali e si tagliano le perdenti, finché la difesa non ha più carte in quei colori.&lt;br /&gt;
# &#039;&#039;&#039;Messa in mano&#039;&#039;&#039;: si cede una presa a un avversario scelto, in modo che debba rigiocare.&lt;br /&gt;
# &#039;&#039;&#039;Scelta del colore&#039;&#039;&#039;: la difesa può muovere solo il colore pericoloso, oppure giocare in taglio e scarto, che permette al dichiarante di scartare una perdente e tagliare nell&#039;altra mano.&lt;br /&gt;
&lt;br /&gt;
== Eliminazione e impasse a confronto ==&lt;br /&gt;
La linea di impasse o expasse dipende dalla posizione di una carta: se è sbagliata, la mano cade. L&#039;eliminazione sposta il problema: invece di indovinare dove sta la carta, si costringe la difesa a muovere per prima nel colore dove si vuole che giochi. Funziona quando la difesa non ha uscite neutre, cioè colori dove può giocare senza regalare nulla. Quando le ha ancora, la messa in mano non produce l&#039;effetto sperato e occorre ripiegare sulla linea di impasse.&lt;br /&gt;
&lt;br /&gt;
== Errori tipici ==&lt;br /&gt;
* &#039;&#039;&#039;Incassare un giro di troppo&#039;&#039;&#039;: togliere una carta che serviva come uscita al dichiarante o come ingresso, e lasciare alla difesa una uscita neutra.&lt;br /&gt;
* &#039;&#039;&#039;Togliere troppo presto un ingresso&#039;&#039;&#039;: dopo aver eliminato i colori, al dichiarante manca il rientro in mano o al morto necessario a completare la tecnica.&lt;br /&gt;
* &#039;&#039;&#039;Non contare prima&#039;&#039;&#039;: iniziare a incassare senza avere stabilito quale colore deve restare alla difesa.&lt;br /&gt;
&lt;br /&gt;
== Esempio 1: messa in mano a cuori ==&lt;br /&gt;
Nord è dichiarante, nessuno in zona. Contratto 4{{picche}}, attacco Fante di fiori.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal dealer=&amp;quot;N&amp;quot; vul=&amp;quot;None&amp;quot; board=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
N: AKQJ7.52.J74.AQ5&lt;br /&gt;
E: 86.J943.A106.J1097&lt;br /&gt;
S: T954.AQ6.Q852.K6&lt;br /&gt;
W: 32.K1087.K93.8432&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1S P 2NT P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dopo aver battuto le atout, si incassano i fiori scartando una piccola di cuori dal morto e si incassano gli onori di cuori. La difesa, messa in presa, deve muovere quadri oppure giocare in taglio e scarto. La linea di impasse a cuori e di expasse a quadri riuscirebbe solo con certe posizioni (circa il 67 %); l&#039;eliminazione realizza dieci prese qualunque sia la difesa (verificato a carte scoperte).&lt;br /&gt;
&lt;br /&gt;
== Esempio 2: la dama di quadri e l&#039;impasse a picche non servono ==&lt;br /&gt;
Ovest è dichiarante, Est-Ovest in zona. Contratto 4{{cuori}}, attacco 5 di fiori.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal dealer=&amp;quot;W&amp;quot; vul=&amp;quot;EW&amp;quot; board=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
N: KJ7652.JT.8632.5&lt;br /&gt;
E: 98.6543.AJ5.7432&lt;br /&gt;
S: T43.972.Q97.A986&lt;br /&gt;
W: AQ.AKQ8.KT4.KQJT&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2D P 2NT P 3C P 3H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dopo aver battuto le atout e incassato i fiori, basta giocare Asso e Dama di picche (eliminazione) invece di indovinare la posizione della Dama di quadri o di tentare l&#039;impasse a picche: la linea di eliminazione riesce nel 100 % dei casi contro circa il 75 % delle altre. Dieci prese verificate a carte scoperte.&lt;br /&gt;
&lt;br /&gt;
== Regole di generazione ==&lt;br /&gt;
Questa pagina fornisce a Play le regole per generare smazzate di allenamento. Ogni scenario fissa la struttura del dichiarante e del morto: le lunghezze dei colori e gli onori del colore chiave; le carte basse e gli onori non nominati sono casuali e sui difensori non c&#039;è alcun vincolo di punti.&lt;br /&gt;
* &#039;&#039;&#039;E1 (messa in mano a cuori)&#039;&#039;&#039;: dichiarante con cinque picche e AKQJ, morto con quattro picche; contratto da giocare 4{{picche}}.&lt;br /&gt;
* &#039;&#039;&#039;E2 (dama a picche evitata)&#039;&#039;&#039;: dichiarante con AKQ di cuori e KQJT di fiori, morto con quattro cuori; contratto da giocare 4{{cuori}}.&lt;br /&gt;
* &#039;&#039;&#039;E3 (slam a quadri con atout 2-2)&#039;&#039;&#039;: slam a picche (contratto 6{{picche}}) con colore chiave a quadri e atout divisi 2-2 fra i difensori.&lt;br /&gt;
* &#039;&#039;&#039;E4 (taglio e scarto)&#039;&#039;&#039;: contratto 4{{picche}} con taglio e scarto: l&#039;attaccante (opp1) ha Asso, Re e Dama di cuori quarte e quattro quadri, atout 2-2.&lt;br /&gt;
* &#039;&#039;&#039;E5 (sottoapertura a quadri)&#039;&#039;&#039;: contratto 6{{fiori}} dopo una sottoapertura a quadri dell&#039;attaccante: ha quadri sesti con K, J, 10 e l&#039;Asso di cuori.&lt;br /&gt;
Gli scenari E3-E5 vincolano anche i difensori, perché la linea di eliminazione dipende da come sono divisi gli atout e da dove stanno gli onori.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota di verifica.&#039;&#039;&#039; Gli scenari sono stati controllati campionando mani e risolvendole a carte scoperte con la difesa migliore: il contratto si realizza in E1 10/10, E2 9/10, E3 9/10, E4 5 mani risolte su 5 (altre 3 non risolte nel tempo massimo), E5 8/8. Il campione è piccolo, quindi sono indicazioni e non garanzie.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Gioco della carta (bridge)]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* ProgettoBridge, &#039;&#039;Lezione 18 — Gioco di Eliminazione, Smazzate esplicative&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Gioco_di_eliminazione&amp;diff=2002</id>
		<title>Gioco di eliminazione</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Gioco_di_eliminazione&amp;diff=2002"/>
		<updated>2026-10-27T20:18:16Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Nuova pagina: gioco di eliminazione&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Convenzione&lt;br /&gt;
|nome=Gioco di eliminazione&lt;br /&gt;
|tipologia=Tecnica di gioco&lt;br /&gt;
|scopo=Togliere alla difesa le uscite neutre nei colori laterali, in modo che un avversario messo in presa debba muovere un colore pericoloso o giocare in taglio e scarto, evitando di dipendere dalla posizione di una carta.&lt;br /&gt;
|trigger=Contratto a colore con atout lunghi in linea e colori laterali che si possono eliminare (incassando le vincenti e tagliando le perdenti), con un colore chiave in cui la difesa, costretta a giocare per prima, ci regala una presa.&lt;br /&gt;
|risposte=1) Contare le prese sicure e le perdenti; 2) battere le atout; 3) incassare e tagliare i colori laterali; 4) mettere in presa un avversario (messa in mano); 5) lasciare alla difesa solo il colore pericoloso o il taglio e scarto.&lt;br /&gt;
|note=Alternativa alla linea di impasse o expasse: l&#039;eliminazione non dipende dalla posizione di una carta ma richiede che la difesa non abbia uscite neutre. Pagina di tecnica di gioco, non di licita: nessun tag BridgeCC applicabile.&lt;br /&gt;
|shape_constraints=E1 messa in mano a cuori: opener S:5 S=AKQJ H:2 H=x D:3 D=J C:3 C=AQ; responder S:4 S=x H:3 H=AQ D:4 D=Q C:2 C=K // E2 dama a picche evitata: opener S:2 S=AQ H:4 H=AKQ D:3 D=K C:4 C=KQJT; responder S:2 S=x H:4 H=x D:3 D=AJ C:4 C=x&lt;br /&gt;
|shape_roles=opener=Dichiarante;responder=Morto;opp1=Attaccante;opp2=Quarta mano&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;gioco di eliminazione&#039;&#039;&#039; (in inglese &#039;&#039;elimination play&#039;&#039; o &#039;&#039;strip and throw-in&#039;&#039;) è una tecnica del [[Gioco della carta (bridge)|gioco della carta]] con cui il dichiarante, in un contratto a colore, toglie uno dopo l&#039;altro i colori laterali alla difesa e poi mette in presa un avversario, che si trova costretto a giocare un colore dove regala una presa oppure a muovere in taglio e scarto.&lt;br /&gt;
&lt;br /&gt;
== Quando si usa ==&lt;br /&gt;
Si pensa all&#039;eliminazione quando:&lt;br /&gt;
* il contratto è a colore e la linea in atout è tranquilla (tipicamente le atout si battono senza problemi);&lt;br /&gt;
* resta un solo colore da giocare con difficoltà, di solito con una perdente che dipende da un impasse o da una posizione di carte;&lt;br /&gt;
* i colori laterali si possono esaurire incassando le vincenti e tagliando le piccole, in mano o al morto;&lt;br /&gt;
* un avversario può essere messo in presa senza che gli rimanga una uscita neutra.&lt;br /&gt;
&lt;br /&gt;
== Come si svolge ==&lt;br /&gt;
# &#039;&#039;&#039;Conta&#039;&#039;&#039;: si contano le prese sicure e le perdenti e si individua il colore dove la difesa può fare danno.&lt;br /&gt;
# &#039;&#039;&#039;Atout&#039;&#039;&#039;: di norma si battono le atout, per impedire alla difesa di tagliare e per mantenere il controllo.&lt;br /&gt;
# &#039;&#039;&#039;Eliminazione dei colori laterali&#039;&#039;&#039;: si incassano le vincenti dei colori laterali e si tagliano le perdenti, finché la difesa non ha più carte in quei colori.&lt;br /&gt;
# &#039;&#039;&#039;Messa in mano&#039;&#039;&#039;: si cede una presa a un avversario scelto, in modo che debba rigiocare.&lt;br /&gt;
# &#039;&#039;&#039;Scelta del colore&#039;&#039;&#039;: la difesa può muovere solo il colore pericoloso, oppure giocare in taglio e scarto, che permette al dichiarante di scartare una perdente e tagliare nell&#039;altra mano.&lt;br /&gt;
&lt;br /&gt;
== Eliminazione e impasse a confronto ==&lt;br /&gt;
La linea di impasse o expasse dipende dalla posizione di una carta: se è sbagliata, la mano cade. L&#039;eliminazione sposta il problema: invece di indovinare dove sta la carta, si costringe la difesa a muovere per prima nel colore dove si vuole che giochi. Funziona quando la difesa non ha uscite neutre, cioè colori dove può giocare senza regalare nulla. Quando le ha ancora, la messa in mano non produce l&#039;effetto sperato e occorre ripiegare sulla linea di impasse.&lt;br /&gt;
&lt;br /&gt;
== Errori tipici ==&lt;br /&gt;
* &#039;&#039;&#039;Incassare un giro di troppo&#039;&#039;&#039;: togliere una carta che serviva come uscita al dichiarante o come ingresso, e lasciare alla difesa una uscita neutra.&lt;br /&gt;
* &#039;&#039;&#039;Togliere troppo presto un ingresso&#039;&#039;&#039;: dopo aver eliminato i colori, al dichiarante manca il rientro in mano o al morto necessario a completare la tecnica.&lt;br /&gt;
* &#039;&#039;&#039;Non contare prima&#039;&#039;&#039;: iniziare a incassare senza avere stabilito quale colore deve restare alla difesa.&lt;br /&gt;
&lt;br /&gt;
== Esempio 1: messa in mano a cuori ==&lt;br /&gt;
Nord è dichiarante, nessuno in zona. Contratto 4{{picche}}, attacco Fante di fiori.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal dealer=&amp;quot;N&amp;quot; vul=&amp;quot;None&amp;quot; board=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
N: AKQJ7.52.J74.AQ5&lt;br /&gt;
E: 86.J943.A106.J1097&lt;br /&gt;
S: T954.AQ6.Q852.K6&lt;br /&gt;
W: 32.K1087.K93.8432&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1S P 2NT P 4S P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dopo aver battuto le atout, si incassano i fiori scartando una piccola di cuori dal morto e si incassano gli onori di cuori. La difesa, messa in presa, deve muovere quadri oppure giocare in taglio e scarto. La linea di impasse a cuori e di expasse a quadri riuscirebbe solo con certe posizioni (circa il 67 %); l&#039;eliminazione realizza dieci prese qualunque sia la difesa (verificato a carte scoperte).&lt;br /&gt;
&lt;br /&gt;
== Esempio 2: la dama di quadri e l&#039;impasse a picche non servono ==&lt;br /&gt;
Ovest è dichiarante, Est-Ovest in zona. Contratto 4{{cuori}}, attacco 5 di fiori.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal dealer=&amp;quot;W&amp;quot; vul=&amp;quot;EW&amp;quot; board=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
N: KJ7652.JT.8632.5&lt;br /&gt;
E: 98.6543.AJ5.7432&lt;br /&gt;
S: T43.972.Q97.A986&lt;br /&gt;
W: AQ.AKQ8.KT4.KQJT&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2D P 2NT P 3C P 3H P 4H P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dopo aver battuto le atout e incassato i fiori, basta giocare Asso e Dama di picche (eliminazione) invece di indovinare la posizione della Dama di quadri o di tentare l&#039;impasse a picche: la linea di eliminazione riesce nel 100 % dei casi contro circa il 75 % delle altre. Dieci prese verificate a carte scoperte.&lt;br /&gt;
&lt;br /&gt;
== Regole di generazione ==&lt;br /&gt;
Questa pagina fornisce a Play le regole per generare smazzate di allenamento. Ogni scenario fissa la struttura del dichiarante e del morto: le lunghezze dei colori e gli onori del colore chiave; le carte basse e gli onori non nominati sono casuali e sui difensori non c&#039;è alcun vincolo di punti.&lt;br /&gt;
* &#039;&#039;&#039;E1 (messa in mano a cuori)&#039;&#039;&#039;: dichiarante con cinque picche e AKQJ, morto con quattro picche; contratto da giocare 4{{picche}}.&lt;br /&gt;
* &#039;&#039;&#039;E2 (dama a picche evitata)&#039;&#039;&#039;: dichiarante con AKQ di cuori e KQJT di fiori, morto con quattro cuori; contratto da giocare 4{{cuori}}.&lt;br /&gt;
Altri scenari (slam, taglio e scarto, sottoapertura) saranno aggiunti dopo la verifica.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
* [[Gioco della carta (bridge)]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
* ProgettoBridge, &#039;&#039;Lezione 18 — Gioco di Eliminazione, Smazzate esplicative&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Smazzate_di_gioco&amp;diff=2001</id>
		<title>Progetto:BridgeShape Smazzate di gioco</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Smazzate_di_gioco&amp;diff=2001"/>
		<updated>2026-10-27T19:06:55Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Blocchi di codice in &amp;lt;pre&amp;gt; (SyntaxHighlight non caricata)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Regole per generare smazzate di gioco (eliminazione e messa in mano) =&lt;br /&gt;
&lt;br /&gt;
Come descrivere con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; le smazzate didattiche sul &#039;&#039;&#039;gioco della carta&#039;&#039;&#039; (eliminazione,&lt;br /&gt;
messa in mano, expasse, sblocco, conteggio, carta falsa), per esempio quelle della lezione&lt;br /&gt;
&amp;quot;Gioco di Eliminazione&amp;quot; di ProgettoBridge. Gli scenari qui sotto sono &#039;&#039;&#039;archetipi scritti da BridgePedia&#039;&#039;&#039; (non copiano le mani né il testo della lezione). Ogni riga è verificata dal parser&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;RecipesTest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== 1. Cosa può fare la DSL e cosa no ==&lt;br /&gt;
&lt;br /&gt;
La DSL descrive la &#039;&#039;&#039;struttura&#039;&#039;&#039; della smazzata: forma, punti, fit, colori lunghi, contesto&lt;br /&gt;
(contratto, attaccante, vulnerabilità). &#039;&#039;&#039;Non&#039;&#039;&#039; può dire &amp;quot;la mano si realizza solo con la messa in&lt;br /&gt;
mano&amp;quot;: quella è una proprietà del &#039;&#039;gioco&#039;&#039;, non della distribuzione. Quindi la generazione ha due&lt;br /&gt;
fasi:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Generazione strutturale&#039;&#039;&#039; con gli scenari di questa pagina (il motore Play).&lt;br /&gt;
# &#039;&#039;&#039;Filtro tecnico&#039;&#039;&#039; (post-filtro), da realizzare in Play con un risolutore a carte scoperte (double dummy): si tiene la smazzata solo se supera i controlli del §3.&lt;br /&gt;
&lt;br /&gt;
Senza il passo 2 la maggior parte delle mani generate non conterrebbe il tema voluto.&lt;br /&gt;
&lt;br /&gt;
== 2. Archetipi (scenari) ==&lt;br /&gt;
&lt;br /&gt;
Messa in mano dopo eliminazione, fit nobile 5-4, contratto di manche:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Eliminazione base 4S: declarer:opener contract:4S opener S:5 hcp:16-19 ; responder S:4 hcp:8-11&lt;br /&gt;
Eliminazione base 4H: declarer:opener contract:4H opener H:5 hcp:16-19 ; responder H:4 hcp:8-11&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Colore laterale corto da eliminare (singolo o doubleton) con taglio e scarto possibile:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Eliminazione colore corto: declarer:opener contract:4S opener S:5-6 hcp:15-19 $a:2-3 ; responder S:4 $a:2 hcp:8-12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Slam con undici prese vincenti e un solo colore da giocare bene:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Slam con colore chiave: declarer:opener contract:6S pairhcp:30-34 opener S:5+ hcp:17-21 ; responder S:3+ hcp:10-14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expasse e impasse nello stesso colore (stessa posizione di una carta):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Impasse o expasse: declarer:opener contract:6D pairhcp:30-34 opener D:5+ hcp:14-18 ; responder D:4+ hcp:14+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gioco a senza atout con sblocco al primo giro:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SA con sblocco: declarer:opener contract:3NT opener shape:balanced hcp:15-17 ; responder shape:balanced hcp:9-12 ; opp1 S:5+&lt;br /&gt;
SA con onore secondo in mano: declarer:opener contract:3NT opener H:2-3 hcp:15-17 ; responder H:4 hcp:10-12 ; opp1 S:5+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Conteggio della mano di un avversario che ha aperto di barrage o sottoapertura:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Conteggio dopo barrage: dealer:opp1 declarer:opener contract:4H opp1 S:7 hcp:5-9 ; opener H:5+ hcp:16-20 ; responder H:3+&lt;br /&gt;
Conteggio dopo sottoapertura: dealer:opp1 declarer:opener contract:6C opp1 D:6 hcp:5-9 ; opener C:6+ hcp:19+ ; responder C:2-4 hcp:12+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atout 2-2 favorevoli e doppio impasse:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Quattro picche 2-2: declarer:opener contract:4S opener S:5 hcp:12-15 ; responder S:4 hcp:8-11 ; opp1 S:2 ; opp2 S:2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controgioco e attacco per la difesa (si impersona la difesa):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Difesa contro 4 cuori: declarer:opener contract:4H lead:SQ opener H:5+ hcp:17+ ; opp1 S=QJ&lt;br /&gt;
Difesa contro 6 fiori: declarer:opener contract:6C opener C:6+ hcp:19+ ; opp1 H:4-5 hcp:6-10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contro informativo e risposta del compagno:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Contro informativo e risposta: dealer:opener opener S:6 hcp:12-15 ; opp1 hcp:12+ H:4+ ; responder hcp:0-5 C:5+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mano troppo forte per l&#039;appoggio barrage (fit quinto con 2NT Truscott):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Fit quinto con mano forte: declarer:opener contract:4S pairhcp:25-30 opener S:5 hcp:15-18 ; responder S:5+ hcp:9-12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Filtri tecnici (post-filtro con risolutore a carte scoperte) ==&lt;br /&gt;
&lt;br /&gt;
Applicare dopo la generazione strutturale. Soglie indicative da tarare con esempi reali:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Contratto realizzabile ma non banale&#039;&#039;&#039;: il risolutore trova la linea vincente, e la prima linea &amp;quot;ovvia&amp;quot; (per esempio impasse a prima vista) fallisce nella maggior parte delle posizioni alternative.&lt;br /&gt;
* &#039;&#039;&#039;Esistenza di una linea ≥ 90 % più alta della naturale&#039;&#039;&#039;: confrontare le probabilità delle linee; tenere la smazzata se la linea di eliminazione supera la naturale di almeno il 15 %.&lt;br /&gt;
* &#039;&#039;&#039;Eliminazione necessaria&#039;&#039;&#039;: dopo aver tolto i colori laterali la difesa deve essere messa in presa e restare senza uscite neutre (verifica: il contratto cade se si salta l&#039;eliminazione).&lt;br /&gt;
* &#039;&#039;&#039;Una sola linea vincente&#039;&#039;&#039; (o pochissime): scartare le mani risolvibili in molti modi.&lt;br /&gt;
* &#039;&#039;&#039;Coerenza con la licita&#039;&#039;&#039;: licita ricostruita con le convenzioni del sistema scelto, mai incompatibile con le mani (usare il giudice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sulla smazzata finale).&lt;br /&gt;
* &#039;&#039;&#039;Carta falsa / radiografia&#039;&#039;&#039;: nelle mani sul conteggio richiedere che le carte da dedurre siano una distribuzione plausibile (almeno due ipotesi alternative con probabilità diverse).&lt;br /&gt;
&lt;br /&gt;
== 4. Come usarli nelle pagine ==&lt;br /&gt;
&lt;br /&gt;
* Un archetipo per pagina di tecnica, come &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nel template &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Convenzione}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o nella pagina della tecnica, con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; adatti (Dichiarante, Morto, Attaccante, Compagno).&lt;br /&gt;
* Le soglie PO nell&#039;archetipo sono punti di partenza: nella pagina si citano quelle della fonte e le mani reali (con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;deal&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) dall&#039;antologia di smazzate, con la fonte citata.&lt;br /&gt;
* Per smazzate per la &#039;&#039;&#039;difesa&#039;&#039;&#039; usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e descrivere la mano dell&#039;attaccante.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* ProgettoBridge, &#039;&#039;Lezione 18 — Gioco di Eliminazione, smazzate esplicative&#039;&#039; (tecniche e temi trattati; gli archetipi qui sopra sono ricostruzioni originali di BridgePedia, non riproduzioni).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Ricette_DSL&amp;diff=2000</id>
		<title>Progetto:BridgeShape Ricette DSL</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Ricette_DSL&amp;diff=2000"/>
		<updated>2026-10-27T19:06:26Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Aggiunto link a Smazzate di gioco&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Smazzate di gioco|Smazzate di gioco]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Ricette DSL v2 per gli editor =&lt;br /&gt;
&lt;br /&gt;
Come descrivere con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; le situazioni tipiche. Ogni ricetta è verificata dal&lt;br /&gt;
parser (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tests/phpunit/unit/RecipesTest.php&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). I punti sono esempi di partenza: &#039;&#039;&#039;le soglie vanno prese dalla fonte citata nella pagina&#039;&#039;&#039;, non da qui.&lt;br /&gt;
&lt;br /&gt;
Regole: scenari separati da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;//&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; posizioni da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro i template si scrive &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{!}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Per ogni pagina con scenari aggiungere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se i nomi &amp;quot;Apertore/Compagno&amp;quot; non calzano.&lt;br /&gt;
&lt;br /&gt;
== Apertura e risposta con fit variabile (macro) ==&lt;br /&gt;
&lt;br /&gt;
Un solo testo per entrambi i nobili:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S 1${M}-fit: opener ${M}:5+ hcp:12-21; responder ${M}:3+ hcp:6+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Splinter con seme singolo variabile ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S 1${M}: $a=SHDC opener ${M}:5+ hcp:12-21; responder ${M}:4+ $a:0-1 $ahcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; deve essere diverso da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;${M}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, restringere: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SDC&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
== Intervento bicolore su apertura (Landy, Michaels, Cappelletti) ==&lt;br /&gt;
&lt;br /&gt;
Un nobile + un minore, seme dell&#039;apertore escluso con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Michaels nobile+minore: $a=M $b=m opener hcp:12-21 ; opp1 $a:5+ $b:5+ hcp:8-16 ; responder hcp:0-9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Landy (5-4 nei nobili):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Landy 5-4 picche: opener shape:balanced hcp:15-17; opp1 S:5 H:4 hcp:8+&lt;br /&gt;
Landy 4-5 cuori: opener shape:balanced hcp:15-17; opp1 S:4 H:5 hcp:8+&lt;br /&gt;
Landy 5-5: opener shape:balanced hcp:15-17; opp1 S:5+ H:5+ hcp:8+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Avversari che non possono intervenire ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Avversari quiet: opener hcp:12-21; responder hcp:6+; opp1 quiet; opp2 quiet&lt;br /&gt;
Avversari quiet stretti: opener hcp:12-21; responder hcp:6+; opp1 quiet:0-7; opp2 quiet:0-7&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fermate (Lebensohl, Michaels, SA dopo intervento) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Lebensohl con fermata: opener shape:balanced hcp:15-17; opp1 S:5+ hcp:8-15; responder stop:S hcp:10+ H:0-3&lt;br /&gt;
Lebensohl senza fermata: opener shape:balanced hcp:15-17; opp1 S:5+ hcp:8-15; responder nostop:S hcp:10+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blackwood / RKCB / richiesta della Dama ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S RKCB-${M}-1o4: opener ${M}:5+ hcp:16+; responder ${M}:3+ kc:${M}1 has:${M}Q&lt;br /&gt;
@M=H,S RKCB-${M}-2senzaDama: opener ${M}:5+ hcp:16+; responder ${M}:3+ kc:${M}2 lacks:${M}Q&lt;br /&gt;
@M=H,S RKCB-${M}-3: opener ${M}:5+ hcp:16+; responder ${M}:3+ kc:${M}3&lt;br /&gt;
Blackwood-2-assi: opener hcp:18+; responder aces:2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = un asso oppure il Re di cuori; l&#039;atout viene dalla macro.)&lt;br /&gt;
&lt;br /&gt;
== Forze con punteggi alternativi ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Apertura forte per punti totali: opener tp:23+ ; responder hcp:0-7&lt;br /&gt;
Aperture a perdenti: opener ltc:5-6 hcp:17+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternative di mano senza duplicare gli scenari ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Smolen: opener shape:balanced hcp:15-17 any(S:3+ H:2-3, H:3+ S:2-3); responder any(S:5 H:4, S:4 H:5) hcp:10+&lt;br /&gt;
Mano con almeno un nobile lungo: opener any(S:5+, H:5+) hcp:12-21&lt;br /&gt;
Nessun nobile 4+: opener not(S:4+, H:4+) shape:balanced&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Confronti e forme ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Colore più lungo a cuori: opener H&amp;gt;S longest:H hcp:12-21&lt;br /&gt;
Bicolore 5-4 qualsiasi: opener shape:5-4-x-x hcp:12-21&lt;br /&gt;
Semibilanciata: opener shape:semi_balanced&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Barrage / preempt per vulnerabilità e frequenza ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Preempt in zona sfavorevole: vul:us dealer:opener weight:2 opener H:7 hcp:5-10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Segnali e attacchi (contesto di gioco) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Segnale di Smith: declarer:opener contract:4H lead:SK opener H:5+; opp1 S=KQT&lt;br /&gt;
Attacco sotto onore: declarer:opener contract:3NT lead:S4 opener hcp:15-17; opp1 S~K.{2,3}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(L&#039;attacco deve stare nella mano a sinistra del dichiarante: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
== Coppia e forza totale ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Slam: pairhcp:33+ opener hcp:17+ ; responder hcp:14+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cose da NON fare ==&lt;br /&gt;
* Non ripetere uno scenario per ogni nobile: usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Non usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per esprimere &amp;quot;ha almeno 4 carte&amp;quot;: usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:4+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Non usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (viene ignorato).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{!}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e non &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro i parametri dei template.&lt;br /&gt;
* Controllare sempre con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: se compaiono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; lo scenario va corretto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=1999</id>
		<title>Progetto:BridgeShape Motore e frontend</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=1999"/>
		<updated>2026-10-27T19:06:25Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Aggiunto link a Smazzate di gioco&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]] · [[Progetto:BridgeShape Smazzate di gioco|Smazzate di gioco]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Specifica del motore di smazzate e del frontend (per Play) =&lt;br /&gt;
&lt;br /&gt;
Destinatario: il team/sessione di &#039;&#039;&#039;Play&#039;&#039;&#039; (generatore di smazzate e relativo frontend).&lt;br /&gt;
Obiettivo: realizzare un &#039;&#039;&#039;motore completo&#039;&#039;&#039; che generi mani per &#039;&#039;qualsiasi&#039;&#039; scenario&lt;br /&gt;
descritto nelle pagine di BridgePedia, e un &#039;&#039;&#039;frontend&#039;&#039;&#039; per consultare gli scenari,&lt;br /&gt;
generare, creare e gestire smazzate.&lt;br /&gt;
&lt;br /&gt;
Documenti collegati (leggere in quest&#039;ordine):&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_GENERATOR_API.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; — riferimento della sintassi (DSL v1 + v2) e del JSON dell&#039;API.&lt;br /&gt;
# &#039;&#039;&#039;questo file&#039;&#039;&#039; — semantica normativa, architettura del motore, test di conformità, specifica del frontend, piano di consegna.&lt;br /&gt;
# Wiki: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Progetto:BridgeShape API&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; le pagine di convenzione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (elenco: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Fonte di verità del contratto: l&#039;API &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;action=bridgeshape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di https://bridgepedia.it.&lt;br /&gt;
Se questo documento e l&#039;API divergono vale l&#039;API; segnalatelo a BridgePedia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Contratto, versioni e compatibilità ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Elemento&lt;br /&gt;
! Dove&lt;br /&gt;
! Uso&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| risposta di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| oggi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Cambia solo con modifiche non retrocompatibili&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios[].requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| tag delle capacità richieste dallo scenario (§1.1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| contraddizioni semantiche: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| frammenti del DSL scartati dal parser: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| testo leggibile per scenario, tradotto (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang=it&amp;amp;#124;en&amp;amp;#124;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1/0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Regole di compatibilità:&lt;br /&gt;
&lt;br /&gt;
* I campi nuovi compaiono &#039;&#039;&#039;solo se usati&#039;&#039;&#039;: un motore v1 continua a funzionare sulle pagine v1.&lt;br /&gt;
* Campi sconosciuti: ignorarli &#039;&#039;&#039;non&#039;&#039;&#039; è permesso se compaiono in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Se il motore non supporta un tag di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, deve rifiutare lo scenario con codice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (e nome del tag) e il frontend deve mostrarlo come &amp;quot;non ancora generabile&amp;quot;, non nasconderlo.&lt;br /&gt;
* Il booleano nel JSON è sempre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (MediaWiki rimuove i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;false&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Tutte le chiavi di seme sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure una variabile &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;..&amp;quot;$d&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tag&lt;br /&gt;
! Costrutti&lt;br /&gt;
! Impatto sul motore&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| assegnazione di onori precisi&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~AKQ.&amp;amp;#124;A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| alternative di mano nel seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| seme scelto a runtime, condiviso tra posizioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| filtro/vincolo sulla mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte fisse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces kings queens controls kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| conteggi di onori&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp dp ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| punteggi derivati&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp pairtp defhcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| vincolo sulla coppia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| relazioni tra lunghezze&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma ordinata&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| disgiunzioni e negazioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer vul auction contract declarer lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| metadati e carta d&#039;attacco&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scelta ponderata dello scenario&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono già espanse dal parser (non compaiono mai).&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Endpoint consigliati lato Play ===&lt;br /&gt;
&lt;br /&gt;
Il motore deve esporre (nomi indicativi; l&#039;importante è la semantica):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
POST /api/deals/generate&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;source&amp;quot;: { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot;, &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot; }      // oppure { &amp;quot;dsl&amp;quot;: &amp;quot;...&amp;quot; }&lt;br /&gt;
          | { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot; },                           // scenario scelto per peso&lt;br /&gt;
  &amp;quot;count&amp;quot;: 10,                                                // 1..100&lt;br /&gt;
  &amp;quot;seed&amp;quot;: 12345,                                              // opzionale, riproducibilità&lt;br /&gt;
  &amp;quot;fixed&amp;quot;: { &amp;quot;opener&amp;quot;: &amp;quot;SAK2.H.D.C&amp;quot;, &amp;quot;responder&amp;quot;: &amp;quot;...&amp;quot; },    // carte/mani già fissate (§5.6)&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;it&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
→ 200 { &amp;quot;seed&amp;quot;:..., &amp;quot;deals&amp;quot;:[ {&lt;br /&gt;
        &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot;, &amp;quot;index&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;dealer&amp;quot;: &amp;quot;opener&amp;quot;, &amp;quot;vul&amp;quot;: &amp;quot;none&amp;quot;,&lt;br /&gt;
        &amp;quot;hands&amp;quot;: { &amp;quot;opener&amp;quot;:&amp;quot;AK2.QJ53.K84.T65&amp;quot;, &amp;quot;responder&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp1&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp2&amp;quot;:&amp;quot;...&amp;quot; },&lt;br /&gt;
        &amp;quot;bindings&amp;quot;: { &amp;quot;$a&amp;quot;: &amp;quot;H&amp;quot;, &amp;quot;x:opener&amp;quot;: &amp;quot;D&amp;quot; },          // come sono state risolte variabili e jolly&lt;br /&gt;
        &amp;quot;pbn&amp;quot;: &amp;quot;[Deal \&amp;quot;N:...\&amp;quot;]&amp;quot;, &amp;quot;lin&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
        &amp;quot;explanation&amp;quot;: { &amp;quot;opener&amp;quot;: [&amp;quot;♥: 5+ carte&amp;quot;, ...], ... },   // dalle descriptions&lt;br /&gt;
        &amp;quot;stats&amp;quot;: { &amp;quot;attempts&amp;quot;: 412, &amp;quot;ms&amp;quot;: 38 }&lt;br /&gt;
  } ] }&lt;br /&gt;
→ 422 { &amp;quot;code&amp;quot;: &amp;quot;...&amp;quot;, &amp;quot;reasons&amp;quot;: [ {&amp;quot;code&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;position&amp;quot;:&amp;quot;opp1&amp;quot;, &amp;quot;detail&amp;quot;:&amp;quot;...&amp;quot;} ] }&lt;br /&gt;
GET  /api/deals/capabilities  → { &amp;quot;dslVersion&amp;quot;: 2, &amp;quot;supports&amp;quot;: [&amp;quot;suit_cards&amp;quot;, ...] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Posizioni → sedi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Nord per default; il motore ruota in base a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; solo&lt;br /&gt;
per la numerazione/PBN; i vincoli restano sempre in termini di ruoli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a sinistra dell&#039;apertore, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a destra).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Definizioni normative ==&lt;br /&gt;
&lt;br /&gt;
Il motore e il frontend devono usare &#039;&#039;&#039;esattamente&#039;&#039;&#039; queste definizioni (le descrizioni in&lt;br /&gt;
italiano dell&#039;API le presuppongono).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Carte&#039;&#039;&#039;: A K Q J 10 9 8 7 6 5 4 3 2. Nei vincoli &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 10. &amp;quot;Carte basse&amp;quot; = 8..2.&lt;br /&gt;
* &#039;&#039;&#039;PO / HCP&#039;&#039;&#039;: A=4, K=3, Q=2, J=1. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ecc. = PO nel solo seme.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni e coppie&#039;&#039;&#039;: coppia dichiarante = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; difesa = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Senso di gioco: opener → opp1 → responder → opp2 (orario). Lo stesso per l&#039;attaccante: siede a sinistra del dichiarante (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = opener → attacca opp1; responder → opp2; opp1 → responder; opp2 → opener).&lt;br /&gt;
* &#039;&#039;&#039;Forma ordinata&#039;&#039;&#039;: le 4 lunghezze in ordine decrescente (es. 5431).&lt;br /&gt;
* &#039;&#039;&#039;Classi di forma&#039;&#039;&#039; (possono sovrapporsi; le pagine oggi usano solo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;):&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 4333, 4432, 5332.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 5422, 6322.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;one_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: seme più lungo ≥ 6 e secondo ≤ 3.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;two_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: i due semi più lunghi hanno entrambi ≥ 4 carte e insieme ≥ 9 (5-4, 6-4, 5-5, ...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;three_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: tre semi ≥ 4 (4441, 5440, 4450...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun vincolo. Se la vostra implementazione attuale differisce, allineatela a questa o segnalate la differenza.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;54xx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la forma ordinata deve corrispondere cifra per cifra; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = qualsiasi.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la lunghezza di H è ≥ di ogni altro seme (pari merito ammesso).&lt;br /&gt;
* &#039;&#039;&#039;Confronti&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A op B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: sulle lunghezze dei due semi nella stessa mano; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; uguali.&lt;br /&gt;
* &#039;&#039;&#039;Controlli&#039;&#039;&#039;: A=2, K=1 (le dame non contano). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; somma sulla mano.&lt;br /&gt;
* &#039;&#039;&#039;Carte chiave per l&#039;atout T&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): numero di assi (0-4) + 1 se possiede il Re di T. Valori 0-5. La Dama di atout si esprime con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:TQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Fermata&#039;&#039;&#039; nel seme X (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): possiede almeno una tra: A; Kx (Re con ≥ 2 carte nel seme); Qxx (Dama con ≥ 3); Jxxx (Fante con ≥ 4). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessuna di queste.&lt;br /&gt;
* &#039;&#039;&#039;Punti totali &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + (per ogni seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max(0, lunghezza − 4)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Punti distribuzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + 3 per ogni chicane + 2 per ogni singolo + 1 per ogni doubleton.&lt;br /&gt;
* &#039;&#039;&#039;Perdenti &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (Losing Trick Count classico): per ogni seme con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;n&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m = min(n,3)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; perdenti del seme = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m − [A] − [K e n≥2] − [Q e n≥3]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; somma sui 4 semi (seme vuoto = 0). Tabella di controllo: x=1, A=0, K=1, Q=1; xx=2, Ax=1, Kx=1, Qx=2, AK=0, AQ=1, KQ=1; AKQ=0, AKx=1, AQx=1, KQx=1, Axx=2, Kxx=2, Qxx=2, xxx=3. (Correzione: la formula precedente &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m − #A,K,Q&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contava anche K e Q secchi o Q doppia.)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): tra A K Q J 10 9 possiede &#039;&#039;esattamente&#039;&#039; quelle elencate; 8..2 liberi. Stringa vuota = nessuna carta alta. Gli onori elencati sono esclusi dalle altre mani solo per quel che riguarda la proprietà: ogni carta ha un unico proprietario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): una sola alternativa (scelta a caso, uniformemente tra quelle compatibili con gli altri vincoli) descrive tutta la mano in quel seme: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + tra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte basse (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = illimitato, ma ≤ 13 − len(cards)).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (jolly di posizione): un seme scelto a caso tra quelli &#039;&#039;non&#039;&#039; vincolati esplicitamente in quella posizione. Dentro una foglia di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; il jolly vede &#039;&#039;&#039;solo i semi nominati nella foglia&#039;&#039;&#039;; un seme nominato soltanto in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non è escluso da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si riferisce allo stesso seme. Il jolly &#039;&#039;&#039;non&#039;&#039;&#039; è condiviso con altre posizioni.&lt;br /&gt;
* &#039;&#039;&#039;Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: a inizio generazione ogni variabile usata riceve un seme dal proprio dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, default tutti e quattro). Variabili diverse hanno &#039;&#039;&#039;semi diversi&#039;&#039;&#039;; una variabile non dichiarata ha dominio completo. Una variabile può coincidere con un seme nominato esplicitamente (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): se non è voluto, restringere il dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SD&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La scelta è uniforme tra le assegnazioni che rendono lo scenario soddisfacibile.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: somma delle lunghezze dei due compagni nel seme (o in qualunque seme del tipo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;major&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/ &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;minor&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, a scelta del motore, uniformemente tra i semi che soddisfano il vincolo).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la mano soddisfa almeno una alternativa. &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: non ne soddisfa nessuna. Più gruppi → AND. Dentro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono gli stessi campi di una posizione (senza &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not/fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp.declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; = PO(opener)+PO(responder); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defense&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = PO(opp1)+PO(opp2). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: somma &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni non nominate&#039;&#039;&#039;: ricevono le carte rimanenti a caso (nessun vincolo); non applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; implicito.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: probabilità relativa di scelta dello scenario quando non è scelto dall&#039;utente (default 1). Non influenza la generazione dentro lo scenario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: metadati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = coppia dichiarante) vanno riportati nell&#039;output (PBN/LIN) e mostrati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è la sequenza da mostrare/verificare (notazione BridgeCards: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;XX&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1NT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: vedi §5.7.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Architettura consigliata del motore ==&lt;br /&gt;
&lt;br /&gt;
Pipeline per ogni mano richiesta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
parse risposta API → controllo requires/errors/warnings&lt;br /&gt;
 → scelta scenario (utente | peso)&lt;br /&gt;
 → ASSEGNAZIONE SIMBOLICA   : variabili $a.., jolly x:, fit, alternative any()/S~, pattern di forma&lt;br /&gt;
 → MATRICE DELLE LUNGHEZZE  : 4 posizioni × 4 semi (somme 13 per riga e per colonna)&lt;br /&gt;
 → ASSEGNAZIONE DELLE CARTE : carte fissate/vincolate, poi resto casuale&lt;br /&gt;
 → RIPARAZIONE PUNTI        : scambi mirati per entrare negli intervalli PO/tp/dp/ltc/controlli&lt;br /&gt;
 → VERIFICA FINALE          : valutazione indipendente di TUTTI i vincoli sulla smazzata completa&lt;br /&gt;
 → output + spiegazione&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punti chiave:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Verifica finale indipendente&#039;&#039;&#039; (il &amp;quot;giudice&amp;quot;): una funzione pura &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies(deal, scenario, bindings)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che valuta ogni vincolo dalle definizioni di §2. Ogni smazzata emessa deve passarla. Questa funzione è anche la base dei test e del pulsante &amp;quot;verifica&amp;quot; del frontend.&lt;br /&gt;
# &#039;&#039;&#039;Costruzione, non solo scarto.&#039;&#039;&#039; Il rejection sampling puro non regge scenari stretti (es. Gran rever nel Multirever, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con coppia 25+ PO). Costruire prima la matrice delle lunghezze con propagazione dei vincoli (backtracking con limiti per riga/colonna), poi assegnare le carte onore per posizione secondo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;..., infine le basse.&lt;br /&gt;
# &#039;&#039;&#039;Riparazione PO&#039;&#039;&#039;: dopo l&#039;assegnazione, se i PO (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, controlli, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sono fuori intervallo, scambiare due carte tra due mani preservando lunghezze e vincoli &#039;&#039;rigidi&#039;&#039; (carte fissate, pattern). Ricerca locale con budget; poi nuovo tentativo dall&#039;inizio.&lt;br /&gt;
# &#039;&#039;&#039;Uniformità&#039;&#039;&#039;: l&#039;obiettivo è una distribuzione quasi uniforme tra le smazzate che soddisfano lo scenario. Le euristiche di costruzione introducono distorsioni: misuratele (§7.3) e non dichiarate &amp;quot;uniformi&amp;quot; se non lo sono.&lt;br /&gt;
# &#039;&#039;&#039;Budget e fallimenti&#039;&#039;&#039;: limite di tempo (oggi 2,5 s CPU/mano), massimo tentativi, e diagnosi. Su fallimento restituire 422 con i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di §6, mai una smazzata che viola i vincoli.&lt;br /&gt;
# &#039;&#039;&#039;Riproducibilità&#039;&#039;&#039;: stesso &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + stessa versione del DSL → stessa smazzata. Salvare nel record &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; della pagina se disponibile.&lt;br /&gt;
# &#039;&#039;&#039;Concorrenza e cache&#039;&#039;&#039;: cache del JSON dell&#039;API per pagina con TTL breve (60 s) e rivalidazione sulla &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; mai servire DSL non validato.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Ordine di risoluzione dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, jolly &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (decidono &#039;&#039;quali&#039;&#039; semi).&lt;br /&gt;
# Alternative: scegliere un ramo per ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (escludendo i rami impossibili con i vincoli già noti); applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come vincoli di esclusione.&lt;br /&gt;
# Lunghezze (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Carte precise (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held/not_held&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Conteggi (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Punteggi derivati (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Verifica finale.&lt;br /&gt;
&lt;br /&gt;
Un vincolo è &amp;quot;rigido&amp;quot; se riguarda carte/lunghezze fissate (1-4); &amp;quot;morbido&amp;quot; se si ripara per scambio (5-6).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Semantica delle combinazioni delicate ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è già espanso in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun trattamento speciale (il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; serve solo alla descrizione). Una difesa quiet &#039;&#039;&#039;riduce&#039;&#039;&#039; il margine PO per la coppia dichiarante: verificare la compatibilità prima di costruire (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: devono essere coerenti; l&#039;API segnala le contraddizioni evidenti.&lt;br /&gt;
* Una carta (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) può comparire in una sola posizione; due posizioni con la stessa carta sono un errore di validazione, non un caso da risolvere a caso.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro una posizione con variabili: le variabili si legano &#039;&#039;&#039;prima&#039;&#039;&#039;, poi si sceglie il ramo.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: escludere dall&#039;insieme di alternative, non solo filtrare a posteriori.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono sulle lunghezze finali (dopo il bind delle variabili).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la carta deve stare nella mano dell&#039;attaccante (§2) e quella mano deve soddisfare i suoi vincoli (es. se ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SJ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è coerente, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; no).&lt;br /&gt;
&lt;br /&gt;
=== Chiarimenti (concordati con Play) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la sequenza parte dal &#039;&#039;&#039;mazziere&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;); il primo token è la sua chiamata. Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; manca, l&#039;asta è solo descrittiva e non si verifica nulla. Nella v2 l&#039;asta e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono &#039;&#039;&#039;informativi&#039;&#039;&#039;: il motore non deve ricavarne vincoli sulle mani.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: non deve discendere dall&#039;asta (non verificata). Serve a stabilire chi attacca (vedi §2) e quindi a validare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: array di &#039;&#039;&#039;stringhe&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;&amp;lt;etichetta scenario o &#039;scenario #N&#039;&amp;gt;: &amp;lt;messaggio in inglese&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, senza codici né struttura. Il motore li riporta così come sono (codice proprio &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl_errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, §6). Un formato strutturato (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;code&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenario&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;position&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) è una possibile evoluzione: lo si introdurrebbe come campo nuovo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errorDetails&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, senza toccare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: oggi un elemento per scenario con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (testo per posizione) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &#039;&#039;&#039;non esiste un id per singolo vincolo&#039;&#039;&#039;. Se il frontend lo richiede, si aggiungerà un campo additivo (da concordare, §11).&lt;br /&gt;
* &#039;&#039;&#039;«Uniforme»&#039;&#039;&#039; (variabili, jolly, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): tra le assegnazioni di semi che rendono lo scenario soddisfacibile, ciascuna ha uguale probabilità (a meno di tolleranza statistica nei test: ±5 % su 1000 estrazioni per due valori, vedi caso 3). Non implica uniformità sulle carte o sulle mani.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Funzionalità del motore (elenco completo da realizzare) ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Core (parità v1) — già in produzione, da conservare ===&lt;br /&gt;
Lunghezze, PO totali/per seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(espanso), 422 con ragioni, tetto 2,5 s.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Nuove funzioni DSL v2 ===&lt;br /&gt;
Tutte le righe di §1.1. Priorità di consegna in §9.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Mani multiple e serie ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;count&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ≤ 100 per richiesta; opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;distinct: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nessuna mano duplicata nella serie);&lt;br /&gt;
opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balance: &amp;quot;round_robin&amp;quot; &amp;amp;#124; &amp;quot;weighted&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per distribuire gli scenari della stessa convenzione.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Spiegazione per mano ===&lt;br /&gt;
Per ogni smazzata: per posizione, elenco dei vincoli con esito (✓) e valore effettivo&lt;br /&gt;
(&amp;quot;♥: 5 carte, richiesto 5+&amp;quot;), e i &#039;&#039;&#039;binding&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x di opener = ♦&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Serve al frontend.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 Verifica di una smazzata data ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con quattro mani e una &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → elenco di vincoli soddisfatti/violati.&lt;br /&gt;
Usa lo stesso giudice del §3. Serve a: smazzate inserite a mano, correzione in aula, test.&lt;br /&gt;
&lt;br /&gt;
=== 5.6 Mani parzialmente fissate (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
Accettare mani complete o parziali (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;opener&amp;quot;: &amp;quot;SAK2.&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o carte singole) e completare il resto&lt;br /&gt;
rispettando lo scenario. Se impossibile → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 5.7 Contesto di gioco della carta ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il motore garantisce che la carta d&#039;attacco sia nella mano giusta e&lt;br /&gt;
fornisce nel risultato &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;play: { &amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;, &amp;quot;declarer&amp;quot;:&amp;quot;responder&amp;quot;, &amp;quot;leader&amp;quot;:&amp;quot;opp2&amp;quot;, &amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot; }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
(Il gioco successivo, oltre la prima carta, non è nel DSL: per Segnali e Attacchi la prima carta e le&lt;br /&gt;
mani bastano a mostrare la situazione.)&lt;br /&gt;
&lt;br /&gt;
=== 5.8 Statistiche ===&lt;br /&gt;
Per scenario: tasso di successo, tentativi medi, p95 ms, codici di fallimento. Esposte in&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api/deals/stats&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e inviate a BridgePedia (§8.5) per tarare i vincoli.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Codici di errore (422 e simili) ==&lt;br /&gt;
&lt;br /&gt;
Già in uso: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;exact_cards_always_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;generation_time_limit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_below_hcp_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Da aggiungere:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Codice&lt;br /&gt;
! Quando&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| lo scenario richiede un tag non supportato (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;detail&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il tag)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl_errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| l&#039;API ha restituito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (riportarli)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;variable_unsatisfiable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna assegnazione dei semi variabili rende lo scenario possibile&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contraddice lo scenario o carte duplicate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp/pairtp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibili con i limiti per posizione&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibile con la mano dell&#039;attaccante&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;no_branch_left&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; eliminano tutti i rami&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma/lunghezze incompatibili con 13 carte per mano e per seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;invalid_request&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| parametri non validi (count, seed...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni 422 porta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons: [{code, position?, detail}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; leggibili dal frontend.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Test di conformità e qualità ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Invarianti (property test, ≥ 10.000 smazzate per scenario del wiki) ===&lt;br /&gt;
* 52 carte distinte; 13 per mano; nessun duplicato.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vero per ogni smazzata emessa (il giudice &#039;&#039;&#039;non&#039;&#039;&#039; deve condividere codice con il generatore).&lt;br /&gt;
* Stesso seed → stesso risultato.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Casi minimi per costrutto (la DSL → cosa deve valere) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! #&lt;br /&gt;
! DSL&lt;br /&gt;
! Asserzione&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener S:5+ hcp:12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ♠ ≥ 5, PO in intervallo&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S opener ${M}:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| due scenari generabili (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M opener $a:5+; responder $a:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| in ogni mano: un nobile ≥5 in opener, lo stesso seme ≥3 in responder; entrambi i nobili compaiono su 1000 mani&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M $b=m opener $a:5+ $b:4+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| $a nobile, $b minore, mai lo stesso seme&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su 1000 mani&lt;br /&gt;
| tutte le mani hanno A, Kx, Qxx o Jxxx a ♠&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener nostop:S S:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna mano con A, né Kx, Qxx o Jxxx a ♠ (con 3 carte: né A, né K, né Q)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener aces:2 kc:H3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2 assi; assi + K♥ = 3 (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è impossibile: max 2+1)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener has:HQ lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Q♥ presente, K♠ assente&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener tp:20-22&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; corretto con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener ltc:6-7&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| LTC con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;=S longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| confronti rispettati; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con pari merito&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 5 e 4 come due semi più lunghi in ordine; gli altri due sommano 4&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| solo 5422 e 6322&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:5+, H:5+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| almeno un nobile ≥ 5&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener not(S:4+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessun nobile ≥ 4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:4+ hcp:12+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| rami composti&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+ ... opp1 quiet; opp2 quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| coppia ≥ 25, avversari entro i limiti quiet&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:1 ... // weight:3 ...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1000 estrazioni ~ 25%/75% (± tolleranza)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opp1 vul:both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| output con dealer/vul corretti e PBN ruotato&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder lead:SJ opp2 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| J♠ in opp2; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con Q♥ in opener&lt;br /&gt;
| opener ha Q♥ e rispetta lo scenario&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| scenario impossibile (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=AK Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
| 422 con ragione&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| scenario con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; simulato&lt;br /&gt;
| 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aggiungere come test di regressione &#039;&#039;&#039;tutti gli scenari reali&#039;&#039;&#039; delle pagine del wiki&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): per ciascuno ≥ 1000 smazzate valide entro il budget, oppure una&lt;br /&gt;
diagnosi documentata. Gli scenari più duri oggi: &#039;&#039;Multirever&#039;&#039; (Gran rever, 20 scenari) e&lt;br /&gt;
&#039;&#039;Segnale di Smith&#039;&#039; (20 scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== 7.3 Qualità statistica ===&lt;br /&gt;
Per ogni scenario del wiki misurare su 5000 mani: distribuzione delle lunghezze e dei PO nei limiti&lt;br /&gt;
consentiti, tasso di riuscita al primo tentativo, tempo p50/p95. Segnalare distorsioni evidenti&lt;br /&gt;
(es. la posizione A prende sempre i PO alti).&lt;br /&gt;
&lt;br /&gt;
=== 7.4 Prestazioni ===&lt;br /&gt;
Obiettivo: p95 &amp;lt; 300 ms per mano sugli scenari comuni; &amp;lt; 2,5 s sul peggiore. Se non si rispetta,&lt;br /&gt;
non allargare i vincoli: segnalare lo scenario a BridgePedia (§8.5) che può rivederlo.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 8. Frontend di Play ==&lt;br /&gt;
&lt;br /&gt;
Il frontend deve permettere di &#039;&#039;&#039;consultare&#039;&#039;&#039;, &#039;&#039;&#039;generare&#039;&#039;&#039;, &#039;&#039;&#039;creare&#039;&#039;&#039; e &#039;&#039;&#039;gestire&#039;&#039;&#039; smazzate.&lt;br /&gt;
Lingua: italiano, con i18n predisposta (en, fr, es, de). Tutti i testi dei vincoli vengono&lt;br /&gt;
dall&#039;API (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, parametro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): non riscriverli.&lt;br /&gt;
&lt;br /&gt;
=== 8.1 Catalogo delle convenzioni ===&lt;br /&gt;
* Elenco da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con vincoli) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutte, con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hasShape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Per ogni voce: titolo, numero di scenari, link alla pagina del wiki, stato: &#039;&#039;generabile&#039;&#039;, &#039;&#039;parzialmente generabile&#039;&#039; (alcuni scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non supportato), &#039;&#039;non generabile&#039;&#039;.&lt;br /&gt;
* Ricerca testuale; filtri per tipologia/sistema se esposti; badge &amp;quot;da verificare&amp;quot; per le traduzioni non verificate.&lt;br /&gt;
* Le 27 convenzioni senza vincoli compaiono come &amp;quot;scenari in arrivo&amp;quot; con link al wiki.&lt;br /&gt;
&lt;br /&gt;
=== 8.2 Visualizzatore di scenario ===&lt;br /&gt;
* Tabella a colonne per posizione (come la tabella del wiki): etichetta scenario, frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[i].positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (rispettare i ruoli personalizzati, es. &amp;quot;Attaccante&amp;quot;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Semi ♥ ♦ in rosso. Mostrare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come chip (tooltip con spiegazione).&lt;br /&gt;
* Pulsante &amp;quot;Mostra DSL&amp;quot; (testo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;quot;Apri la pagina nel wiki&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 8.3 Generatore ===&lt;br /&gt;
* Scelta convenzione → scenario (singolo, &amp;quot;a caso&amp;quot;, &amp;quot;tutti a rotazione&amp;quot;, pesato) → quantità (1-100) → opzioni (seed, mani distinte, nascondi avversari).&lt;br /&gt;
* Risultato: schede smazzata con 4 mani (formato BridgeCards: ♠♥♦♣, bordi, dealer, vulnerabilità), etichetta scenario, &#039;&#039;&#039;pannello &amp;quot;perché questa mano&amp;quot;&#039;&#039;&#039;: per posizione le frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con spunta, binding (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), PO/lunghezze effettive.&lt;br /&gt;
* Azioni per smazzata: rigenera, &amp;quot;blocca questa mano e rigenera le altre&amp;quot; (usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), copia link con seed, esporta PBN/LIN/immagine, aggiungi alla raccolta.&lt;br /&gt;
* Se la licita &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è presente: mostrarla con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bidding&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stile BridgeCards) o nascosta per esercizio (&amp;quot;indovina la risposta&amp;quot;).&lt;br /&gt;
* Gestione 422: messaggio per codice (§6) con suggerimento (&amp;quot;lo scenario è impossibile perché...&amp;quot;). Per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: spiegare quale capacità manca.&lt;br /&gt;
&lt;br /&gt;
=== 8.4 Editor / creazione di scenari ===&lt;br /&gt;
Due modalità sincronizzate:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Modulo guidato&#039;&#039;&#039; per posizione (Apertore, Compagno, Avv. sinistro, Avv. destro):&lt;br /&gt;
#* lunghezze per seme (slider min-max), PO totali e per seme, forma (classi + schema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* griglia carte per seme (A K Q J 10 9 + &amp;quot;basse&amp;quot;) con stati &#039;&#039;deve avere / non deve avere / indifferente&#039;&#039; che produce &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; costruttore di pattern per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con anteprima;&lt;br /&gt;
#* interruttori: fermata (per seme), assi/re/dame/controlli, carte chiave con atout, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp/dp/ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti tra semi, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come gruppi aggiungibili;&lt;br /&gt;
#* variabili di seme &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con dominio (nobili/minori/qualsiasi);&lt;br /&gt;
#* contesto: dealer, vulnerabilità, licita, contratto, attacco, peso;&lt;br /&gt;
#* avversari: pulsante &#039;&#039;&#039;quiet&#039;&#039;&#039; (e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet:max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* macro: &amp;quot;ripeti per ogni nobile / minore / seme&amp;quot; genera &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Editor testuale&#039;&#039;&#039; del DSL con evidenziazione, completamento e &#039;&#039;validazione live&#039;&#039;: chiama &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (debounce 400 ms) e mostra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con il supporto del motore). Le due modalità si convertono a vicenda (modulo → DSL è obbligatorio; DSL → modulo almeno per i costrutti elementari, il resto resta testuale).&lt;br /&gt;
&lt;br /&gt;
* Pulsante &amp;quot;Prova&amp;quot;: genera 5 mani di test dallo scenario in modifica e mostra tempi e tassi di riuscita.&lt;br /&gt;
* Salvataggio come &#039;&#039;&#039;bozza personale&#039;&#039;&#039; in Play (non scrive sul wiki). Pulsante &amp;quot;Copia per BridgePedia&amp;quot; produce la riga &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; da incollare nella pagina (gli editor del wiki fanno il resto).&lt;br /&gt;
* Libreria di &#039;&#039;&#039;modelli&#039;&#039;&#039; presi dalle convenzioni del wiki (&amp;quot;parti da Landy&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== 8.5 Retroazione verso BridgePedia ===&lt;br /&gt;
* Pulsante &amp;quot;Segnala scenario problematico&amp;quot; (lento / troppo raro / 422 / distribuzione strana) che invia: pagina, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, codice errore, statistiche (§5.8) al canale concordato (sessione/issue). Nessuna scrittura diretta sul wiki.&lt;br /&gt;
* Report periodico automatico delle statistiche di generazione per scenario.&lt;br /&gt;
&lt;br /&gt;
=== 8.6 Smazzate manuali ===&lt;br /&gt;
* Compositore: assegnare le 52 carte alle quattro mani con trascinamento o digitazione (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;AK2.QJ5.K84.T65&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), controllo duplicati, completamento casuale delle carte mancanti (opzionalmente rispettando uno scenario: usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Pulsante &amp;quot;Verifica rispetto a uno scenario&amp;quot; (§5.5) con l&#039;elenco dei vincoli soddisfatti e violati.&lt;br /&gt;
* Importa/esporta PBN, LIN, testo semplice.&lt;br /&gt;
&lt;br /&gt;
=== 8.7 Gestione delle smazzate ===&lt;br /&gt;
* Raccolte (&amp;quot;mazzi di esercizio&amp;quot;): nome, descrizione, convenzione, tag; ordinamento; duplicati evitati.&lt;br /&gt;
* Ricerca per convenzione, scenario, tag, data; filtri per vulnerabilità, dealer.&lt;br /&gt;
* Metadati salvati: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, data, autore.&lt;br /&gt;
* Note personali per smazzata; stampa di una raccolta (fogli A4 con 4 o 6 smazzate per pagina, versione &amp;quot;solo mano dell&#039;apertore&amp;quot; per esercizio).&lt;br /&gt;
* Condivisione: link con seed/raccolta, permessi (privato, gruppo, pubblico) secondo il modello utenti di Play. Esportazione in blocco (PBN).&lt;br /&gt;
* Modalità &amp;quot;esercizio di licita&amp;quot;: mostra le mani di un lato, l&#039;utente inserisce la licita, il frontend confronta con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se presente.&lt;br /&gt;
&lt;br /&gt;
=== 8.8 Requisiti trasversali ===&lt;br /&gt;
* Mobile first; tastiera accessibile; semi anche come lettere per daltonici.&lt;br /&gt;
* Nessuna dipendenza dal wiki per il rendering delle carte (usare componenti propri; stile coerente con BridgeCards).&lt;br /&gt;
* Tempi: la generazione deve mostrare avanzamento e poter essere annullata.&lt;br /&gt;
* Tracciare (analytics interni) tempi, errori e scenari più usati.&lt;br /&gt;
* Testo dei vincoli sempre da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; coerente con la lingua dell&#039;interfaccia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 9. Piano di consegna consigliato ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fase&lt;br /&gt;
! Contenuto&lt;br /&gt;
! Esito atteso&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P0 — compatibilità&#039;&#039;&#039; (subito)&lt;br /&gt;
| leggere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; esporre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; rifiutare con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; giudice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per v1&lt;br /&gt;
| nessuna smazzata errata con le pagine nuove&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P1 — core v2&#039;&#039;&#039;&lt;br /&gt;
| macro (nessun lavoro, già espanse), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, classi nuove, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scenari per Landy/Cappelletti/DONT/Smolen con forme e alternative&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P2 — variabili e carte&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; condivise tra posizioni, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has/lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces/kings/queens/controls/kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Michaels, Sputnik, Lebensohl, Blackwood/RKCB, Exclusion&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P3 — punteggi&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| sistemi a forza (Fiori forte, 2♣ forte, Gazzilli)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P4 — frontend lettura&#039;&#039;&#039;&lt;br /&gt;
| catalogo, visualizzatore, generatore con spiegazioni&lt;br /&gt;
| tutti possono provare le convenzioni&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P5 — frontend creazione&#039;&#039;&#039;&lt;br /&gt;
| editor guidato + testuale con validazione live, &amp;quot;Prova&amp;quot;, bozze&lt;br /&gt;
| gli editor creano e collaudano scenari senza il wiki&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P6 — gestione&#039;&#039;&#039;&lt;br /&gt;
| raccolte, smazzate manuali, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, esportazioni, esercizi di licita&lt;br /&gt;
| uso didattico completo&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P7 — qualità&#039;&#039;&#039;&lt;br /&gt;
| suite di conformità (§7), statistiche, report verso BridgePedia&lt;br /&gt;
| motore misurabile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni fase deve chiudersi con i test di §7 per i costrutti introdotti. BridgePedia estende le&lt;br /&gt;
pagine del wiki man mano che i tag diventano disponibili: &#039;&#039;&#039;comunicate a ogni fase la lista dei tag supportati&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) così il wiki passa dalle approssimazioni (pattern &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ai&lt;br /&gt;
costrutti nativi solo quando il motore li regge.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 10. Cosa fa BridgePedia (per non sovrapporsi) ==&lt;br /&gt;
&lt;br /&gt;
* Mantiene il DSL, il parser, le descrizioni e l&#039;API; aggiunge costrutti su richiesta motivata.&lt;br /&gt;
* Scrive e tiene aggiornati gli scenari nelle pagine delle convenzioni; le 27 mancanti saranno coperte via via con i costrutti v2.&lt;br /&gt;
* Fornisce il catalogo di ricette (come descrivere Landy, Blackwood, un attacco sotto onore...).&lt;br /&gt;
* Riceve da Play le segnalazioni di §8.5 e rivede i vincoli troppo duri.&lt;br /&gt;
&lt;br /&gt;
== 11. Decisioni aperte (da concordare con Play) ==&lt;br /&gt;
&lt;br /&gt;
# Definizione definitiva delle classi di forma (§2) rispetto a quanto già implementato.&lt;br /&gt;
# Formato di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (testo semplice vs struttura con esito per vincolo).&lt;br /&gt;
# Modello di persistenza e permessi delle raccolte (utenti Play).&lt;br /&gt;
# Canale per le segnalazioni verso BridgePedia (§8.5).&lt;br /&gt;
# Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; deve accettare anche vincoli aggiuntivi temporanei (override locali dello scenario).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=1998</id>
		<title>Progetto:BridgeShape API</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=1998"/>
		<updated>2026-10-27T19:06:24Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Aggiunto link a Smazzate di gioco&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]] · [[Progetto:BridgeShape Smazzate di gioco|Smazzate di gioco]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — API per Generatori di Smazzate =&lt;br /&gt;
&lt;br /&gt;
Documentazione tecnica per chi sviluppa un generatore di smazzate di test&lt;br /&gt;
che legge i vincoli di distribuzione (shape constraints) dalle convenzioni&lt;br /&gt;
di BridgePedia.&lt;br /&gt;
&lt;br /&gt;
== Panoramica ==&lt;br /&gt;
&lt;br /&gt;
Ogni pagina wiki di convenzione su BridgePedia può definire nel template&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Convenzione}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; un campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che descrive, in un formato&lt;br /&gt;
DSL compatto, i vincoli di distribuzione delle mani dei 4 giocatori al tavolo.&lt;br /&gt;
&lt;br /&gt;
L&#039;estensione &#039;&#039;&#039;BridgeShape&#039;&#039;&#039; espone un&#039;API REST/JSON per leggere questi&lt;br /&gt;
vincoli in modo strutturato.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== API Endpoint ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GET /api.php?action=bridgeshape&amp;amp;shapeaction=ACTION&amp;amp;format=json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Azioni disponibili ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Azione&lt;br /&gt;
! Descrizione&lt;br /&gt;
! Parametri&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Vincoli per una singola convenzione&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pageid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;title&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco convenzioni con vincoli definiti&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco tutte le convenzioni (con/senza vincoli)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Valida una stringa DSL senza bisogno di una pagina wiki&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi di chiamata ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Per titolo pagina&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;title=Splinter&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Per page ID&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;pageid=42&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Elenco pagine con vincoli&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Validare una stringa DSL&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=validate&amp;amp;dsl=opener+H:5%2B+hcp:12-21&amp;amp;format=json&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato risposta JSON ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;shapeconstraints&amp;quot;: {&lt;br /&gt;
    &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
    &amp;quot;raw&amp;quot;: &amp;quot;1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 // ...&amp;quot;,&lt;br /&gt;
    &amp;quot;scenarios&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;1H-4C&amp;quot;,&lt;br /&gt;
        &amp;quot;positions&amp;quot;: {&lt;br /&gt;
          &amp;quot;opener&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 5, &amp;quot;max&amp;quot;: null }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 12, &amp;quot;max&amp;quot;: 21 }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;responder&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 4, &amp;quot;max&amp;quot;: null },&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 1 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;suit_hcp&amp;quot;: {&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 0 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 10, &amp;quot;max&amp;quot;: 15 }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fit&amp;quot;: []&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Descrizioni leggibili.&#039;&#039;&#039; Insieme a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stesso ordine): per ogni scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;label&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(per posizione, elenco di frasi già tradotte, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;♠: ha K J 10 (e non A Q 9)&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nome del ruolo, es. &amp;quot;Attaccante&amp;quot; se la pagina ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
altrimenti &amp;quot;Apertore (chi usa la convenzione)&amp;quot;, &amp;quot;Compagno&amp;quot;, ...) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Parametro opzionale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (it, en, ...; default lingua dell&#039;API, di solito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;it&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
Serve a mostrare nell&#039;interfaccia di Play &#039;&#039;&#039;perché&#039;&#039;&#039; la mano è fatta così.&lt;br /&gt;
Nella posizione compare anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se è stata usata la macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pages&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Splinter&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 6,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;1H-4C&amp;quot;, &amp;quot;1H-4D&amp;quot;, &amp;quot;1H-4S&amp;quot;, &amp;quot;1S-4C&amp;quot;, &amp;quot;1S-4D&amp;quot;, &amp;quot;1S-4H&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 15,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Stayman&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 2,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;fit a cuori&amp;quot;, &amp;quot;fit a picche&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato DSL ==&lt;br /&gt;
&lt;br /&gt;
Il DSL (Domain Specific Language) è la stringa scritta nel campo&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; del template wiki.&lt;br /&gt;
&lt;br /&gt;
=== Struttura ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
etichetta: vincoli posizione; vincoli posizione // etichetta: vincoli // ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;//&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa gli scenari (il generatore ne sceglie uno random o li presenta all&#039;utente)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa le posizioni dentro uno scenario&lt;br /&gt;
* Ogni scenario ha un&#039;&#039;&#039;&#039;etichetta&#039;&#039;&#039; opzionale seguita da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Ogni posizione inizia col nome del ruolo, seguito da vincoli separati da spazi&lt;br /&gt;
&lt;br /&gt;
=== Posizioni ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Nome&lt;br /&gt;
! Ruolo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Chi apre o fa la prima licita convenzionale&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Il compagno dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a sinistra dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a destra dell&#039;opener (compagno di opp1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vincoli ===&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:5+       — almeno 5 picche&lt;br /&gt;
H:0-1      — 0 o 1 cuori&lt;br /&gt;
D:3        — esattamente 3 quadri&lt;br /&gt;
C:2-5      — da 2 a 5 fiori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Semi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Spades/Picche, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Hearts/Cuori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;D&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Diamonds/Quadri, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Clubs/Fiori&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
x:0-1      — un seme qualsiasi (tra quelli non specificati) con 0-1 carte&lt;br /&gt;
x:6+       — un seme non specificato con almeno 6 carte&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il generatore sceglie casualmente quale seme assegnare a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tra quelli&lt;br /&gt;
non già vincolati esplicitamente (S/H/D/C).&lt;br /&gt;
&lt;br /&gt;
==== HCP totali ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
hcp:15-17  — da 15 a 17 punti onore&lt;br /&gt;
hcp:12+    — almeno 12 punti&lt;br /&gt;
hcp:0-7    — da 0 a 7 punti&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Shcp:3+    — almeno 3 HCP a picche&lt;br /&gt;
Chcp:0     — 0 HCP a fiori (nessun onore)&lt;br /&gt;
Hhcp:0-2   — da 0 a 2 HCP a cuori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
xhcp:0     — 0 HCP nel seme wildcard (x)&lt;br /&gt;
xhcp:0-1   — 0-1 HCP nel seme x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shape class ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
shape:balanced      — distribuzione bilanciata (4333, 4432, 5332)&lt;br /&gt;
shape:semi_balanced — semibilanciata (5422, 6322)&lt;br /&gt;
shape:one_suiter    — monocolore&lt;br /&gt;
shape:two_suiter    — bicolore&lt;br /&gt;
shape:three_suiter  — tricolore&lt;br /&gt;
shape:any           — qualsiasi (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Onori esatti in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S=KJT      — in picche ha K, J e 10; NON ha A, Q, 9 (le carte basse 8-2 completano)&lt;br /&gt;
S=KT9      — sequenza interna: K, 10, 9; NON ha A, Q, J&lt;br /&gt;
H=Q        — a cuori ha la Q come unico onore tra A K Q J 10&lt;br /&gt;
D=x        — nessun onore a quadri (solo carte basse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le lettere ammesse sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La regola è: &#039;&#039;&#039;le carte elencate sono possedute, le altre tra A K Q J 10 9 NON lo sono&#039;&#039;&#039;; le carte&lt;br /&gt;
dall&#039;8 in giù sono libere e riempiono fino alla lunghezza del seme. Serve a&lt;br /&gt;
descrivere attacchi (sequenza interrotta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, interna &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, sotto onore &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;K&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Q&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e le carte del compagno. Si combina con la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:5 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;quot;S&amp;quot;: &amp;quot;KJT&amp;quot;, &amp;quot;H&amp;quot;: &amp;quot;&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(stringa vuota = nessuna carta alta). Il generatore deve:&lt;br /&gt;
* assegnare esattamente quegli onori alla mano e &#039;&#039;&#039;escluderli&#039;&#039;&#039; dalle altre mani del seme; gli onori non nominati da nessuna posizione sono distribuiti a caso, ma mai a una posizione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per quel seme che non li elenca;&lt;br /&gt;
* rispettare comunque &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (la validazione segnala le contraddizioni, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KQ Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o lo stesso onore a due mani).&lt;br /&gt;
&lt;br /&gt;
==== Pattern di mano in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, stile regex) ====&lt;br /&gt;
&lt;br /&gt;
Descrive &#039;&#039;&#039;l&#039;intera mano in quel seme&#039;&#039;&#039;, dall&#039;alto in basso, come una piccola&lt;br /&gt;
espressione regolare ancorata (inizio e fine):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S~AKQ.          — A, K, Q + una carta bassa (4 carte)&lt;br /&gt;
S~A...          — A + tre carte basse (4 carte)&lt;br /&gt;
S~AJT9.         — A, J, 10, 9 + una bassa&lt;br /&gt;
S~AKQ.|A...     — alternative: una OPPURE l&#039;altra&lt;br /&gt;
S~[KQ]x{2,3}    — K o Q (come unico onore) + 2 o 3 carte basse&lt;br /&gt;
S~KJT.*         — K, J, 10 + qualunque numero di basse (anche zero)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi:&lt;br /&gt;
* &#039;&#039;&#039;Carte alte&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &#039;&#039;&#039;sempre in ordine decrescente&#039;&#039;&#039;, ciascuna posseduta; quelle non nominate tra A K Q J 10 9 NON sono possedute.&lt;br /&gt;
* &#039;&#039;&#039;Classe&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[KQ]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = una carta tra quelle (si espande in alternative).&lt;br /&gt;
* &#039;&#039;&#039;Carta bassa&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) = una carta qualsiasi tra 8 e 2; compare solo in fondo. Quantificatori: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;?&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0-1), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (1 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n,m}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Più punti si sommano (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = tre basse).&lt;br /&gt;
* &#039;&#039;&#039;Alternative&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il generatore ne sceglie una a caso per ogni mano.&lt;br /&gt;
&lt;br /&gt;
È la forma più espressiva di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che resta valida): il pattern fissa anche&lt;br /&gt;
la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 4 carte). Se c&#039;è anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; i due vincoli devono&lt;br /&gt;
essere compatibili (la validazione API segnala le incompatibilità).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, già &#039;&#039;&#039;normalizzato&#039;&#039;&#039; (classi&lt;br /&gt;
espanse, quantificatori risolti), così il generatore non deve interpretare la&lt;br /&gt;
regex:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;suit_patterns&amp;quot;: {&lt;br /&gt;
  &amp;quot;S&amp;quot;: [&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;AKQ&amp;quot;, &amp;quot;low_min&amp;quot;: 1, &amp;quot;low_max&amp;quot;: 1},&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;A&amp;quot;,   &amp;quot;low_min&amp;quot;: 3, &amp;quot;low_max&amp;quot;: 3}&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = carte alte possedute (ordine A K Q J T 9); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; =&lt;br /&gt;
numero di carte basse (2-8), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessun limite. La lunghezza del&lt;br /&gt;
seme è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;len(cards) + numero di basse&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Il generatore sceglie una alternativa e&lt;br /&gt;
rispetta anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Gli onori di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vanno esclusi dalle altre&lt;br /&gt;
mani; quelli non nominati nella mano vanno ad altri a caso.&lt;br /&gt;
&lt;br /&gt;
==== Avversari &amp;quot;quiet&amp;quot; (nessun intervento) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opp1 quiet           — solo per opp1/opp2&lt;br /&gt;
opp2 quiet:0-7       — come quiet, ma con HCP personalizzati&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è una &#039;&#039;&#039;macro espansa dall&#039;API&#039;&#039;&#039;: nel JSON non compare mai la parola&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ma i vincoli già risolti. Chi legge l&#039;API (il generatore) non deve&lt;br /&gt;
implementare nulla di nuovo. Si espande in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:0-4 H:0-4 D:0-5 C:0-5 hcp:0-9 Shcp:0-3 Hhcp:0-3 Dhcp:0-4 Chcp:0-4&lt;br /&gt;
(con quiet:0-7 → hcp:0-7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significato: gli avversari possono avere colori lunghi (così le mani sono&lt;br /&gt;
varie), ma poveri di onori e con pochi punti: nessun colore da 6+ carte&lt;br /&gt;
(niente apertura di sbarramento), nessun contro informativo, nessun intervento&lt;br /&gt;
naturale credibile. Le distribuzioni ammesse sono quindi molte, ma con punti&lt;br /&gt;
ridotti: il generatore ha meno margine sugli HCP della coppia dichiarante&lt;br /&gt;
(40 punti totali: apertore+rispondente restano sopra ~22).&lt;br /&gt;
I token espliciti scritti sulla stessa posizione &#039;&#039;&#039;sostituiscono&#039;&#039;&#039; i default,&lt;br /&gt;
in qualsiasi ordine: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1 quiet S:0-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; lascia le picche 0-4 e tiene il resto.&lt;br /&gt;
Su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; la macro viene ignorata.&lt;br /&gt;
&lt;br /&gt;
==== Fit (vincolo cross-posizione) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit:H8+    — almeno 8 cuori totali tra i compagni&lt;br /&gt;
fit:S9+    — almeno 9 picche totali tra i compagni&lt;br /&gt;
fit:M8+    — almeno 8 carte in un seme maggiore (H o S)&lt;br /&gt;
fit:m8+    — almeno 8 carte in un seme minore (D o C)&lt;br /&gt;
fit:8+     — almeno 8 carte in un seme qualsiasi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fit si applica tra &#039;&#039;&#039;compagni&#039;&#039;&#039;:&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o a livello di scenario → coppia dichiarante&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → coppia difensiva&lt;br /&gt;
&lt;br /&gt;
=== Formato range ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sintassi&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Almeno 5 (min=5, max=null)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0-1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 0 a 1 (min=0, max=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Esattamente 3 (min=3, max=3)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 12 a 21 (min=12, max=21)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nella risposta JSON, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; significa &amp;quot;nessun limite superiore&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Semi non menzionati ===&lt;br /&gt;
&lt;br /&gt;
I semi &#039;&#039;&#039;non vincolati&#039;&#039;&#039; e non coperti da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono distribuiti &#039;&#039;&#039;casualmente&#039;&#039;&#039;&lt;br /&gt;
dal generatore, rispettando il vincolo che il totale delle carte per mano sia 13.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== DSL versione 2 (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion: 2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
Tutto ciò che sopra resta valido e &#039;&#039;&#039;invariato&#039;&#039;&#039;: i campi v1 hanno lo stesso significato di prima.&lt;br /&gt;
La v2 aggiunge sintassi nuova; &#039;&#039;&#039;ogni scenario ha nel JSON il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (elenco di tag,&lt;br /&gt;
vuoto se usa solo la v1; vedi sotto) così un motore parziale può rifiutare uno scenario con un&lt;br /&gt;
errore esplicito invece di generare mani sbagliate. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[].context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è sempre presente&lt;br /&gt;
(array, eventualmente vuoto).&lt;br /&gt;
Le definizioni normative (cosa è una fermata, i punti totali, le perdenti...) e&lt;br /&gt;
l&#039;architettura del motore sono in &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_ENGINE_SPEC.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Macro di scrittura (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@NOME=v1,v2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) — risolte dal parser, il motore non le vede ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S  1${M}: opener ${M}:5+ hcp:12-21; responder ${M}:3+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Genera due scenari (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sostituendo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;${M}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ovunque, etichetta compresa.&lt;br /&gt;
Più prefissi fanno il prodotto cartesiano (max 64 scenari): &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S @N=15-17,12-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
I valori possono essere intervalli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp:${N}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): servono anche come parametri del&lt;br /&gt;
sistema (SA 15-17 contro 14-16).&lt;br /&gt;
&lt;br /&gt;
=== Semi variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b $c $d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Un seme &amp;quot;da scegliere&amp;quot; condiviso da più posizioni dello stesso scenario. Ogni&lt;br /&gt;
variabile è un seme diverso dalle altre. Dominio dichiarato a livello di scenario&lt;br /&gt;
(prima delle posizioni):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Landy: $a=M $b=any  opener hcp:12-21 ; opp1 $a:5+ $b:4+ ; responder $a:0-2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nobili, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=m&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; minori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (default) qualunque, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SH&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; insieme esplicito.&lt;br /&gt;
Una variabile non dichiarata vale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutti i semi). Si usano al posto di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lunghezza), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$ahcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=KQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:$aQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;gt;$b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Differisce da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che vale per una sola posizione).&lt;br /&gt;
JSON: lo stesso dizionario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ... ma con chiave &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
a livello di scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;vars&amp;quot;: {&amp;quot;$a&amp;quot;: [&amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;]}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Controlli, carte chiave, carte precise ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Token&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings:1-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens:0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| numero di assi / re / dame nella mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| controlli (A=2, K=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H2-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte chiave con atout H: i 4 assi + il Re di H (0-5)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:S10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| possiede quella carta precisa&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NON possiede quella carta&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ha / non ha una fermata nel seme (definizione in SPEC)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards: {&amp;quot;H&amp;quot;: Range}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held: [&amp;quot;HQ&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_not_held: [&amp;quot;SK&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers: {&amp;quot;S&amp;quot;: 1, &amp;quot;H&amp;quot;: 0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(1 = deve averla, 0 = non deve averla).&lt;br /&gt;
&lt;br /&gt;
=== Punti e perdenti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti totali (PO + 1 per ogni carta oltre la quarta in ogni seme),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti distribuzione (PO + 3 chicane + 2 singolo + 1 doubleton),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; perdenti (Losing Trick Count). A livello di scenario: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(PO della coppia dichiarante), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defhcp:0-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (coppia avversaria), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairtp:26+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range) nella posizione; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp: {&amp;quot;declarer&amp;quot;: R, &amp;quot;defense&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp: {&amp;quot;declarer&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nello scenario.&lt;br /&gt;
&lt;br /&gt;
=== Confronti tra semi e forme precise ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
H&amp;gt;S   H&amp;gt;=S   H&amp;lt;S   H&amp;lt;=S   H==S   $a&amp;gt;$b      — confronto di lunghezze nella stessa mano&lt;br /&gt;
longest:H                                      — H è tra i semi più lunghi (pari merito ammesso)&lt;br /&gt;
shape:5-4-x-x   shape:5422   shape:54xx        — lunghezze ordinate in modo decrescente, x = qualsiasi&lt;br /&gt;
shape:semi_balanced                            — 5422 e 6322 (si aggiunge alle classi esistenti)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare: [{&amp;quot;left&amp;quot;:&amp;quot;H&amp;quot;,&amp;quot;op&amp;quot;:&amp;quot;&amp;gt;=&amp;quot;,&amp;quot;right&amp;quot;:&amp;quot;S&amp;quot;}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest: [&amp;quot;H&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern: &amp;quot;54xx&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Alternative e negazioni nella stessa mano: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener any(S:4+ hcp:12+, H:4+)   not(D:6+)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano soddisfa &#039;&#039;&#039;almeno una&#039;&#039;&#039; delle alternative (separate da virgola;&lt;br /&gt;
ogni alternativa è una congiunzione di token). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano non soddisfa&lt;br /&gt;
&#039;&#039;&#039;nessuna&#039;&#039;&#039; delle alternative. Si possono scrivere più gruppi (si combinano in AND);&lt;br /&gt;
niente annidamenti.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any: [[altA, altB], ...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lista di gruppi; ogni alternativa è un oggetto&lt;br /&gt;
con gli stessi campi di una posizione), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not: [altA, altB]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Contesto dello scenario ===&lt;br /&gt;
&lt;br /&gt;
Token prima delle posizioni: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (frequenza relativa, 1-100, default 1),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul:none&amp;amp;#124;us&amp;amp;#124;them&amp;amp;#124;both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = apertore+rispondente),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction:1SA,P,2C,P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (licite, notazione BridgeCards; SA = NT), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract:4H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (int) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context: {&amp;quot;dealer&amp;quot;:..,&amp;quot;vul&amp;quot;:..,&amp;quot;auction&amp;quot;:[..],&amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;,&amp;quot;declarer&amp;quot;:..,&amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Il motore deve usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando li espone (per la numerazione del tavolo) e,&lt;br /&gt;
se c&#039;è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, la carta deve stare nella mano dell&#039;attaccante (a sinistra del&lt;br /&gt;
dichiarante) e rispettare i vincoli di quella mano.&lt;br /&gt;
&lt;br /&gt;
=== Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (has/lacks),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (aces/kings/queens/controls/kc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tp/dp/ltc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (confronti, longest), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non compaiono: sono già espanse.&lt;br /&gt;
&lt;br /&gt;
=== Avvisi di parsing (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando un frammento del DSL non è stato&lt;br /&gt;
capito e quindi &#039;&#039;&#039;scartato&#039;&#039;&#039;: nome di posizione sbagliato, token sconosciuto o con valore&lt;br /&gt;
non valido (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:5&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=Kx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:4-5-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), token di scenario dopo le posizioni, posizione&lt;br /&gt;
definita due volte, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su opener/responder, gruppo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con alternative non&lt;br /&gt;
valide (in tal caso &#039;&#039;&#039;l&#039;intero gruppo è ignorato&#039;&#039;&#039;, mai applicato a metà). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate.valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è 1&lt;br /&gt;
solo se non ci sono né &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; né &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Un motore non deve generare se ci sono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Limiti (oltre i quali il parser avvisa e tronca): 60.000 caratteri di input, 200 scenari, 6&lt;br /&gt;
prefissi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, 64 valori per macro, 64 scenari per espansione, 8 gruppi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e 16 alternative&lt;br /&gt;
per posizione. Le etichette non possono contenere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Struttura JSON di uno scenario ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typescript&amp;quot;&amp;gt;&lt;br /&gt;
interface Scenario {&lt;br /&gt;
  label: string;           // Etichetta (es. &amp;quot;1H-4C&amp;quot;), vuota se non specificata&lt;br /&gt;
  positions: {&lt;br /&gt;
    [posName: string]: Position;  // &amp;quot;opener&amp;quot;, &amp;quot;responder&amp;quot;, &amp;quot;opp1&amp;quot;, &amp;quot;opp2&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  fit: FitConstraint[];    // Vincoli di fit (array, può essere vuoto)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Position {&lt;br /&gt;
  suit_patterns?: {         // Pattern regex-like normalizzati: {&amp;quot;S&amp;quot;:[{&amp;quot;cards&amp;quot;:&amp;quot;AKQ&amp;quot;,&amp;quot;low_min&amp;quot;:1,&amp;quot;low_max&amp;quot;:1}]}&lt;br /&gt;
    [suit: string]: { cards: string; low_min: number; low_max: number | null }[];&lt;br /&gt;
  };&lt;br /&gt;
  suit_cards?: { [suit: string]: string };  // Onori esatti, es. {&amp;quot;S&amp;quot;:&amp;quot;KJT&amp;quot;}; &amp;quot;&amp;quot; = nessuna carta alta&lt;br /&gt;
  suits?: {                // Vincoli lunghezza seme (solo semi esplicitati)&lt;br /&gt;
    [suit: string]: Range; // &amp;quot;S&amp;quot;, &amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;C&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  hcp?: Range;             // HCP totali&lt;br /&gt;
  suit_hcp?: {             // HCP per seme specifico&lt;br /&gt;
    [suit: string]: Range;&lt;br /&gt;
  };&lt;br /&gt;
  x?: Range;               // Lunghezza seme wildcard&lt;br /&gt;
  x_hcp?: Range;           // HCP seme wildcard&lt;br /&gt;
  shape?: string;          // Shape class: &amp;quot;balanced&amp;quot;, &amp;quot;one_suiter&amp;quot;, etc.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Range {&lt;br /&gt;
  min: number;&lt;br /&gt;
  max: number | null;      // null = nessun limite superiore&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface FitConstraint {&lt;br /&gt;
  suit: string | null;      // &amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;,&amp;quot;D&amp;quot;,&amp;quot;C&amp;quot; o null&lt;br /&gt;
  suit_class: string | null; // &amp;quot;major&amp;quot;, &amp;quot;minor&amp;quot; o null&lt;br /&gt;
  min: number;              // Numero minimo di carte (es. 8)&lt;br /&gt;
  pair: string;             // &amp;quot;declarer&amp;quot; o &amp;quot;defense&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logica per il generatore ==&lt;br /&gt;
&lt;br /&gt;
=== Algoritmo base ===&lt;br /&gt;
&lt;br /&gt;
Per ogni scenario:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Scegli lo scenario&#039;&#039;&#039;: random tra quelli disponibili, oppure lascia scegliere all&#039;utente&lt;br /&gt;
# &#039;&#039;&#039;Risolvi wildcard&#039;&#039;&#039;:&lt;br /&gt;
#* Se una posizione ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scegli un seme casuale tra quelli non esplicitamente vincolati&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si applica allo stesso seme scelto per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Risolvi fit&#039;&#039;&#039;:&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è specificato, entrambi i compagni devono avere un totale &amp;gt;= &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in quel seme&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit_class&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;quot;major&amp;quot;, scegli tra H e S; se &amp;quot;minor&amp;quot;, tra D e C&lt;br /&gt;
#* Se entrambi sono null, scegli un seme qualsiasi&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.pair&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; indica quale coppia: &amp;quot;declarer&amp;quot; (opener+responder) o &amp;quot;defense&amp;quot; (opp1+opp2)&lt;br /&gt;
# &#039;&#039;&#039;Genera le mani&#039;&#039;&#039;:&lt;br /&gt;
#* Per ogni posizione, genera una mano che rispetti tutti i vincoli&lt;br /&gt;
#* I semi senza vincoli vengono riempiti casualmente&lt;br /&gt;
#* Il totale delle carte per mano deve essere esattamente 13&lt;br /&gt;
#* Il totale delle carte per seme (tutte e 4 le mani) deve essere esattamente 13&lt;br /&gt;
# &#039;&#039;&#039;Posizioni non menzionate&#039;&#039;&#039;: se uno scenario non menziona &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, distribuisci le carte rimanenti casualmente tra gli avversari&lt;br /&gt;
&lt;br /&gt;
=== Priorità dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Vincoli di fit (cross-posizione) — determinano la distribuzione di base&lt;br /&gt;
# Vincoli di seme specifico (S:, H:, D:, C:) — limitano i singoli semi&lt;br /&gt;
# Vincoli wildcard (x:) — dopo aver fissato i semi specifici&lt;br /&gt;
# Vincoli HCP (hcp:, Shcp:, xhcp:) — filtro finale&lt;br /&gt;
# Shape class (shape:) — validazione della forma complessiva&lt;br /&gt;
&lt;br /&gt;
=== Gestione di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Quando &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, non c&#039;è limite superiore esplicito. I limiti fisici&lt;br /&gt;
del bridge si applicano comunque:&lt;br /&gt;
* Massimo 13 carte per seme (tutte e 4 le mani)&lt;br /&gt;
* Massimo 13 carte per mano&lt;br /&gt;
* Massimo 10 HCP per seme (A+K+Q+J = 4+3+2+1)&lt;br /&gt;
* Massimo 37 HCP per mano (raro ma teoricamente possibile con tutti gli onori)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Esempi completi ==&lt;br /&gt;
&lt;br /&gt;
=== Splinter (tutti gli scenari specifici) ===&lt;br /&gt;
&lt;br /&gt;
DSL nel template wiki:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1H-4D: opener H:5+ hcp:12-21; responder H:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1H-4S: opener H:5+ hcp:12-21; responder H:4+ S:0-1 Shcp:0 hcp:10-15 //&lt;br /&gt;
1S-4C: opener S:5+ hcp:12-21; responder S:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1S-4D: opener S:5+ hcp:12-21; responder S:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1S-4H: opener S:5+ hcp:12-21; responder S:4+ H:0-1 Hhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Splinter (compatto con fit e wildcard) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
dopo 1H: fit:H8+ opener H:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15 //&lt;br /&gt;
dopo 1S: fit:S8+ opener S:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stayman ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit a cuori: fit:H8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder H:4+ hcp:8+ //&lt;br /&gt;
fit a picche: fit:S8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder S:4+ hcp:8+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contro informativo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
base: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; responder hcp:0-8 //&lt;br /&gt;
con intervento: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; opp2 hcp:8+ x:5+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preempt 3-a-livello ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener H:7+ x:0-1 hcp:5-10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overcall con fit avversari ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
overcall semplice: opener hcp:12-21 x:5+; opp1 hcp:10+ x:5+; opp2 fit:8+ //&lt;br /&gt;
con barrage: opener hcp:12-21 x:5+; opp1 hcp:6-10 x:6+; opp2 fit:9+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Note implementative ==&lt;br /&gt;
&lt;br /&gt;
* L&#039;API è read-only, non richiede token CSRF&lt;br /&gt;
* L&#039;accesso anonimo è abilitato di default (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;BridgeShapeAllowAnonymous: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) perché i dati sono pubblici e i tool esterni ne hanno bisogno&lt;br /&gt;
* Il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella risposta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contiene la stringa DSL originale, utile per debug&lt;br /&gt;
* L&#039;azione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; permette di testare stringhe DSL senza creare pagine wiki&lt;br /&gt;
* I calcoli HCP usano la scala standard: A=4, K=3, Q=2, J=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Smazzate_di_gioco&amp;diff=1997</id>
		<title>Progetto:BridgeShape Smazzate di gioco</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Smazzate_di_gioco&amp;diff=1997"/>
		<updated>2026-10-27T19:06:07Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Nuova pagina: smazzate di gioco BridgeShape (da DSL_SMAZZATE_GIOCO.md)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Regole per generare smazzate di gioco (eliminazione e messa in mano) =&lt;br /&gt;
&lt;br /&gt;
Come descrivere con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; le smazzate didattiche sul &#039;&#039;&#039;gioco della carta&#039;&#039;&#039; (eliminazione,&lt;br /&gt;
messa in mano, expasse, sblocco, conteggio, carta falsa), per esempio quelle della lezione&lt;br /&gt;
&amp;quot;Gioco di Eliminazione&amp;quot; di ProgettoBridge. Gli scenari qui sotto sono &#039;&#039;&#039;archetipi scritti da BridgePedia&#039;&#039;&#039; (non copiano le mani né il testo della lezione). Ogni riga è verificata dal parser&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;RecipesTest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== 1. Cosa può fare la DSL e cosa no ==&lt;br /&gt;
&lt;br /&gt;
La DSL descrive la &#039;&#039;&#039;struttura&#039;&#039;&#039; della smazzata: forma, punti, fit, colori lunghi, contesto&lt;br /&gt;
(contratto, attaccante, vulnerabilità). &#039;&#039;&#039;Non&#039;&#039;&#039; può dire &amp;quot;la mano si realizza solo con la messa in&lt;br /&gt;
mano&amp;quot;: quella è una proprietà del &#039;&#039;gioco&#039;&#039;, non della distribuzione. Quindi la generazione ha due&lt;br /&gt;
fasi:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Generazione strutturale&#039;&#039;&#039; con gli scenari di questa pagina (il motore Play).&lt;br /&gt;
# &#039;&#039;&#039;Filtro tecnico&#039;&#039;&#039; (post-filtro), da realizzare in Play con un risolutore a carte scoperte (double dummy): si tiene la smazzata solo se supera i controlli del §3.&lt;br /&gt;
&lt;br /&gt;
Senza il passo 2 la maggior parte delle mani generate non conterrebbe il tema voluto.&lt;br /&gt;
&lt;br /&gt;
== 2. Archetipi (scenari) ==&lt;br /&gt;
&lt;br /&gt;
Messa in mano dopo eliminazione, fit nobile 5-4, contratto di manche:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Eliminazione base 4S: declarer:opener contract:4S opener S:5 hcp:16-19 ; responder S:4 hcp:8-11&lt;br /&gt;
Eliminazione base 4H: declarer:opener contract:4H opener H:5 hcp:16-19 ; responder H:4 hcp:8-11&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Colore laterale corto da eliminare (singolo o doubleton) con taglio e scarto possibile:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Eliminazione colore corto: declarer:opener contract:4S opener S:5-6 hcp:15-19 $a:2-3 ; responder S:4 $a:2 hcp:8-12&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Slam con undici prese vincenti e un solo colore da giocare bene:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Slam con colore chiave: declarer:opener contract:6S pairhcp:30-34 opener S:5+ hcp:17-21 ; responder S:3+ hcp:10-14&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expasse e impasse nello stesso colore (stessa posizione di una carta):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Impasse o expasse: declarer:opener contract:6D pairhcp:30-34 opener D:5+ hcp:14-18 ; responder D:4+ hcp:14+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gioco a senza atout con sblocco al primo giro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
SA con sblocco: declarer:opener contract:3NT opener shape:balanced hcp:15-17 ; responder shape:balanced hcp:9-12 ; opp1 S:5+&lt;br /&gt;
SA con onore secondo in mano: declarer:opener contract:3NT opener H:2-3 hcp:15-17 ; responder H:4 hcp:10-12 ; opp1 S:5+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Conteggio della mano di un avversario che ha aperto di barrage o sottoapertura:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Conteggio dopo barrage: dealer:opp1 declarer:opener contract:4H opp1 S:7 hcp:5-9 ; opener H:5+ hcp:16-20 ; responder H:3+&lt;br /&gt;
Conteggio dopo sottoapertura: dealer:opp1 declarer:opener contract:6C opp1 D:6 hcp:5-9 ; opener C:6+ hcp:19+ ; responder C:2-4 hcp:12+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atout 2-2 favorevoli e doppio impasse:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Quattro picche 2-2: declarer:opener contract:4S opener S:5 hcp:12-15 ; responder S:4 hcp:8-11 ; opp1 S:2 ; opp2 S:2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Controgioco e attacco per la difesa (si impersona la difesa):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Difesa contro 4 cuori: declarer:opener contract:4H lead:SQ opener H:5+ hcp:17+ ; opp1 S=QJ&lt;br /&gt;
Difesa contro 6 fiori: declarer:opener contract:6C opener C:6+ hcp:19+ ; opp1 H:4-5 hcp:6-10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contro informativo e risposta del compagno:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Contro informativo e risposta: dealer:opener opener S:6 hcp:12-15 ; opp1 hcp:12+ H:4+ ; responder hcp:0-5 C:5+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mano troppo forte per l&#039;appoggio barrage (fit quinto con 2NT Truscott):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Fit quinto con mano forte: declarer:opener contract:4S pairhcp:25-30 opener S:5 hcp:15-18 ; responder S:5+ hcp:9-12&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Filtri tecnici (post-filtro con risolutore a carte scoperte) ==&lt;br /&gt;
&lt;br /&gt;
Applicare dopo la generazione strutturale. Soglie indicative da tarare con esempi reali:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Contratto realizzabile ma non banale&#039;&#039;&#039;: il risolutore trova la linea vincente, e la prima linea &amp;quot;ovvia&amp;quot; (per esempio impasse a prima vista) fallisce nella maggior parte delle posizioni alternative.&lt;br /&gt;
* &#039;&#039;&#039;Esistenza di una linea ≥ 90 % più alta della naturale&#039;&#039;&#039;: confrontare le probabilità delle linee; tenere la smazzata se la linea di eliminazione supera la naturale di almeno il 15 %.&lt;br /&gt;
* &#039;&#039;&#039;Eliminazione necessaria&#039;&#039;&#039;: dopo aver tolto i colori laterali la difesa deve essere messa in presa e restare senza uscite neutre (verifica: il contratto cade se si salta l&#039;eliminazione).&lt;br /&gt;
* &#039;&#039;&#039;Una sola linea vincente&#039;&#039;&#039; (o pochissime): scartare le mani risolvibili in molti modi.&lt;br /&gt;
* &#039;&#039;&#039;Coerenza con la licita&#039;&#039;&#039;: licita ricostruita con le convenzioni del sistema scelto, mai incompatibile con le mani (usare il giudice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sulla smazzata finale).&lt;br /&gt;
* &#039;&#039;&#039;Carta falsa / radiografia&#039;&#039;&#039;: nelle mani sul conteggio richiedere che le carte da dedurre siano una distribuzione plausibile (almeno due ipotesi alternative con probabilità diverse).&lt;br /&gt;
&lt;br /&gt;
== 4. Come usarli nelle pagine ==&lt;br /&gt;
&lt;br /&gt;
* Un archetipo per pagina di tecnica, come &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nel template &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Convenzione}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o nella pagina della tecnica, con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; adatti (Dichiarante, Morto, Attaccante, Compagno).&lt;br /&gt;
* Le soglie PO nell&#039;archetipo sono punti di partenza: nella pagina si citano quelle della fonte e le mani reali (con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;deal&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) dall&#039;antologia di smazzate, con la fonte citata.&lt;br /&gt;
* Per smazzate per la &#039;&#039;&#039;difesa&#039;&#039;&#039; usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e descrivere la mano dell&#039;attaccante.&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* ProgettoBridge, &#039;&#039;Lezione 18 — Gioco di Eliminazione, smazzate esplicative&#039;&#039; (tecniche e temi trattati; gli archetipi qui sopra sono ricostruzioni originali di BridgePedia, non riproduzioni).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=1993</id>
		<title>Progetto:BridgeShape Motore e frontend</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=1993"/>
		<updated>2026-10-23T16:31:40Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Aggiornamento da DEAL_ENGINE_SPEC.md (LTC, semi_balanced, jolly x, casi di test)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Specifica del motore di smazzate e del frontend (per Play) =&lt;br /&gt;
&lt;br /&gt;
Destinatario: il team/sessione di &#039;&#039;&#039;Play&#039;&#039;&#039; (generatore di smazzate e relativo frontend).&lt;br /&gt;
Obiettivo: realizzare un &#039;&#039;&#039;motore completo&#039;&#039;&#039; che generi mani per &#039;&#039;qualsiasi&#039;&#039; scenario&lt;br /&gt;
descritto nelle pagine di BridgePedia, e un &#039;&#039;&#039;frontend&#039;&#039;&#039; per consultare gli scenari,&lt;br /&gt;
generare, creare e gestire smazzate.&lt;br /&gt;
&lt;br /&gt;
Documenti collegati (leggere in quest&#039;ordine):&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_GENERATOR_API.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; — riferimento della sintassi (DSL v1 + v2) e del JSON dell&#039;API.&lt;br /&gt;
# &#039;&#039;&#039;questo file&#039;&#039;&#039; — semantica normativa, architettura del motore, test di conformità, specifica del frontend, piano di consegna.&lt;br /&gt;
# Wiki: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Progetto:BridgeShape API&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; le pagine di convenzione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (elenco: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Fonte di verità del contratto: l&#039;API &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;action=bridgeshape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di https://bridgepedia.it.&lt;br /&gt;
Se questo documento e l&#039;API divergono vale l&#039;API; segnalatelo a BridgePedia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Contratto, versioni e compatibilità ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Elemento&lt;br /&gt;
! Dove&lt;br /&gt;
! Uso&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| risposta di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| oggi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Cambia solo con modifiche non retrocompatibili&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios[].requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| tag delle capacità richieste dallo scenario (§1.1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| contraddizioni semantiche: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| frammenti del DSL scartati dal parser: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| testo leggibile per scenario, tradotto (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang=it&amp;amp;#124;en&amp;amp;#124;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1/0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Regole di compatibilità:&lt;br /&gt;
&lt;br /&gt;
* I campi nuovi compaiono &#039;&#039;&#039;solo se usati&#039;&#039;&#039;: un motore v1 continua a funzionare sulle pagine v1.&lt;br /&gt;
* Campi sconosciuti: ignorarli &#039;&#039;&#039;non&#039;&#039;&#039; è permesso se compaiono in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Se il motore non supporta un tag di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, deve rifiutare lo scenario con codice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (e nome del tag) e il frontend deve mostrarlo come &amp;quot;non ancora generabile&amp;quot;, non nasconderlo.&lt;br /&gt;
* Il booleano nel JSON è sempre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (MediaWiki rimuove i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;false&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Tutte le chiavi di seme sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure una variabile &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;..&amp;quot;$d&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tag&lt;br /&gt;
! Costrutti&lt;br /&gt;
! Impatto sul motore&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| assegnazione di onori precisi&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~AKQ.&amp;amp;#124;A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| alternative di mano nel seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| seme scelto a runtime, condiviso tra posizioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| filtro/vincolo sulla mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte fisse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces kings queens controls kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| conteggi di onori&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp dp ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| punteggi derivati&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp pairtp defhcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| vincolo sulla coppia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| relazioni tra lunghezze&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma ordinata&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| disgiunzioni e negazioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer vul auction contract declarer lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| metadati e carta d&#039;attacco&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scelta ponderata dello scenario&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono già espanse dal parser (non compaiono mai).&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Endpoint consigliati lato Play ===&lt;br /&gt;
&lt;br /&gt;
Il motore deve esporre (nomi indicativi; l&#039;importante è la semantica):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
POST /api/deals/generate&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;source&amp;quot;: { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot;, &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot; }      // oppure { &amp;quot;dsl&amp;quot;: &amp;quot;...&amp;quot; }&lt;br /&gt;
          | { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot; },                           // scenario scelto per peso&lt;br /&gt;
  &amp;quot;count&amp;quot;: 10,                                                // 1..100&lt;br /&gt;
  &amp;quot;seed&amp;quot;: 12345,                                              // opzionale, riproducibilità&lt;br /&gt;
  &amp;quot;fixed&amp;quot;: { &amp;quot;opener&amp;quot;: &amp;quot;SAK2.H.D.C&amp;quot;, &amp;quot;responder&amp;quot;: &amp;quot;...&amp;quot; },    // carte/mani già fissate (§5.6)&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;it&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
→ 200 { &amp;quot;seed&amp;quot;:..., &amp;quot;deals&amp;quot;:[ {&lt;br /&gt;
        &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot;, &amp;quot;index&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;dealer&amp;quot;: &amp;quot;opener&amp;quot;, &amp;quot;vul&amp;quot;: &amp;quot;none&amp;quot;,&lt;br /&gt;
        &amp;quot;hands&amp;quot;: { &amp;quot;opener&amp;quot;:&amp;quot;AK2.QJ53.K84.T65&amp;quot;, &amp;quot;responder&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp1&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp2&amp;quot;:&amp;quot;...&amp;quot; },&lt;br /&gt;
        &amp;quot;bindings&amp;quot;: { &amp;quot;$a&amp;quot;: &amp;quot;H&amp;quot;, &amp;quot;x:opener&amp;quot;: &amp;quot;D&amp;quot; },          // come sono state risolte variabili e jolly&lt;br /&gt;
        &amp;quot;pbn&amp;quot;: &amp;quot;[Deal \&amp;quot;N:...\&amp;quot;]&amp;quot;, &amp;quot;lin&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
        &amp;quot;explanation&amp;quot;: { &amp;quot;opener&amp;quot;: [&amp;quot;♥: 5+ carte&amp;quot;, ...], ... },   // dalle descriptions&lt;br /&gt;
        &amp;quot;stats&amp;quot;: { &amp;quot;attempts&amp;quot;: 412, &amp;quot;ms&amp;quot;: 38 }&lt;br /&gt;
  } ] }&lt;br /&gt;
→ 422 { &amp;quot;code&amp;quot;: &amp;quot;...&amp;quot;, &amp;quot;reasons&amp;quot;: [ {&amp;quot;code&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;position&amp;quot;:&amp;quot;opp1&amp;quot;, &amp;quot;detail&amp;quot;:&amp;quot;...&amp;quot;} ] }&lt;br /&gt;
GET  /api/deals/capabilities  → { &amp;quot;dslVersion&amp;quot;: 2, &amp;quot;supports&amp;quot;: [&amp;quot;suit_cards&amp;quot;, ...] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Posizioni → sedi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Nord per default; il motore ruota in base a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; solo&lt;br /&gt;
per la numerazione/PBN; i vincoli restano sempre in termini di ruoli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a sinistra dell&#039;apertore, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a destra).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Definizioni normative ==&lt;br /&gt;
&lt;br /&gt;
Il motore e il frontend devono usare &#039;&#039;&#039;esattamente&#039;&#039;&#039; queste definizioni (le descrizioni in&lt;br /&gt;
italiano dell&#039;API le presuppongono).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Carte&#039;&#039;&#039;: A K Q J 10 9 8 7 6 5 4 3 2. Nei vincoli &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 10. &amp;quot;Carte basse&amp;quot; = 8..2.&lt;br /&gt;
* &#039;&#039;&#039;PO / HCP&#039;&#039;&#039;: A=4, K=3, Q=2, J=1. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ecc. = PO nel solo seme.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni e coppie&#039;&#039;&#039;: coppia dichiarante = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; difesa = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Senso di gioco: opener → opp1 → responder → opp2 (orario). Lo stesso per l&#039;attaccante: siede a sinistra del dichiarante (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = opener → attacca opp1; responder → opp2; opp1 → responder; opp2 → opener).&lt;br /&gt;
* &#039;&#039;&#039;Forma ordinata&#039;&#039;&#039;: le 4 lunghezze in ordine decrescente (es. 5431).&lt;br /&gt;
* &#039;&#039;&#039;Classi di forma&#039;&#039;&#039; (possono sovrapporsi; le pagine oggi usano solo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;):&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 4333, 4432, 5332.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 5422, 6322.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;one_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: seme più lungo ≥ 6 e secondo ≤ 3.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;two_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: i due semi più lunghi hanno entrambi ≥ 4 carte e insieme ≥ 9 (5-4, 6-4, 5-5, ...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;three_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: tre semi ≥ 4 (4441, 5440, 4450...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun vincolo. Se la vostra implementazione attuale differisce, allineatela a questa o segnalate la differenza.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;54xx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la forma ordinata deve corrispondere cifra per cifra; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = qualsiasi.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la lunghezza di H è ≥ di ogni altro seme (pari merito ammesso).&lt;br /&gt;
* &#039;&#039;&#039;Confronti&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A op B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: sulle lunghezze dei due semi nella stessa mano; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; uguali.&lt;br /&gt;
* &#039;&#039;&#039;Controlli&#039;&#039;&#039;: A=2, K=1 (le dame non contano). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; somma sulla mano.&lt;br /&gt;
* &#039;&#039;&#039;Carte chiave per l&#039;atout T&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): numero di assi (0-4) + 1 se possiede il Re di T. Valori 0-5. La Dama di atout si esprime con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:TQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Fermata&#039;&#039;&#039; nel seme X (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): possiede almeno una tra: A; Kx (Re con ≥ 2 carte nel seme); Qxx (Dama con ≥ 3); Jxxx (Fante con ≥ 4). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessuna di queste.&lt;br /&gt;
* &#039;&#039;&#039;Punti totali &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + (per ogni seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max(0, lunghezza − 4)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Punti distribuzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + 3 per ogni chicane + 2 per ogni singolo + 1 per ogni doubleton.&lt;br /&gt;
* &#039;&#039;&#039;Perdenti &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (Losing Trick Count classico): per ogni seme con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;n&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m = min(n,3)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; perdenti del seme = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m − [A] − [K e n≥2] − [Q e n≥3]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; somma sui 4 semi (seme vuoto = 0). Tabella di controllo: x=1, A=0, K=1, Q=1; xx=2, Ax=1, Kx=1, Qx=2, AK=0, AQ=1, KQ=1; AKQ=0, AKx=1, AQx=1, KQx=1, Axx=2, Kxx=2, Qxx=2, xxx=3. (Correzione: la formula precedente &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m − #A,K,Q&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contava anche K e Q secchi o Q doppia.)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): tra A K Q J 10 9 possiede &#039;&#039;esattamente&#039;&#039; quelle elencate; 8..2 liberi. Stringa vuota = nessuna carta alta. Gli onori elencati sono esclusi dalle altre mani solo per quel che riguarda la proprietà: ogni carta ha un unico proprietario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): una sola alternativa (scelta a caso, uniformemente tra quelle compatibili con gli altri vincoli) descrive tutta la mano in quel seme: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + tra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte basse (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = illimitato, ma ≤ 13 − len(cards)).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (jolly di posizione): un seme scelto a caso tra quelli &#039;&#039;non&#039;&#039; vincolati esplicitamente in quella posizione. Dentro una foglia di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; il jolly vede &#039;&#039;&#039;solo i semi nominati nella foglia&#039;&#039;&#039;; un seme nominato soltanto in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non è escluso da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si riferisce allo stesso seme. Il jolly &#039;&#039;&#039;non&#039;&#039;&#039; è condiviso con altre posizioni.&lt;br /&gt;
* &#039;&#039;&#039;Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: a inizio generazione ogni variabile usata riceve un seme dal proprio dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, default tutti e quattro). Variabili diverse hanno &#039;&#039;&#039;semi diversi&#039;&#039;&#039;; una variabile non dichiarata ha dominio completo. Una variabile può coincidere con un seme nominato esplicitamente (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): se non è voluto, restringere il dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SD&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La scelta è uniforme tra le assegnazioni che rendono lo scenario soddisfacibile.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: somma delle lunghezze dei due compagni nel seme (o in qualunque seme del tipo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;major&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/ &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;minor&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, a scelta del motore, uniformemente tra i semi che soddisfano il vincolo).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la mano soddisfa almeno una alternativa. &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: non ne soddisfa nessuna. Più gruppi → AND. Dentro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono gli stessi campi di una posizione (senza &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not/fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp.declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; = PO(opener)+PO(responder); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defense&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = PO(opp1)+PO(opp2). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: somma &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni non nominate&#039;&#039;&#039;: ricevono le carte rimanenti a caso (nessun vincolo); non applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; implicito.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: probabilità relativa di scelta dello scenario quando non è scelto dall&#039;utente (default 1). Non influenza la generazione dentro lo scenario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: metadati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = coppia dichiarante) vanno riportati nell&#039;output (PBN/LIN) e mostrati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è la sequenza da mostrare/verificare (notazione BridgeCards: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;XX&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1NT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: vedi §5.7.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Architettura consigliata del motore ==&lt;br /&gt;
&lt;br /&gt;
Pipeline per ogni mano richiesta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
parse risposta API → controllo requires/errors/warnings&lt;br /&gt;
 → scelta scenario (utente | peso)&lt;br /&gt;
 → ASSEGNAZIONE SIMBOLICA   : variabili $a.., jolly x:, fit, alternative any()/S~, pattern di forma&lt;br /&gt;
 → MATRICE DELLE LUNGHEZZE  : 4 posizioni × 4 semi (somme 13 per riga e per colonna)&lt;br /&gt;
 → ASSEGNAZIONE DELLE CARTE : carte fissate/vincolate, poi resto casuale&lt;br /&gt;
 → RIPARAZIONE PUNTI        : scambi mirati per entrare negli intervalli PO/tp/dp/ltc/controlli&lt;br /&gt;
 → VERIFICA FINALE          : valutazione indipendente di TUTTI i vincoli sulla smazzata completa&lt;br /&gt;
 → output + spiegazione&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punti chiave:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Verifica finale indipendente&#039;&#039;&#039; (il &amp;quot;giudice&amp;quot;): una funzione pura &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies(deal, scenario, bindings)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che valuta ogni vincolo dalle definizioni di §2. Ogni smazzata emessa deve passarla. Questa funzione è anche la base dei test e del pulsante &amp;quot;verifica&amp;quot; del frontend.&lt;br /&gt;
# &#039;&#039;&#039;Costruzione, non solo scarto.&#039;&#039;&#039; Il rejection sampling puro non regge scenari stretti (es. Gran rever nel Multirever, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con coppia 25+ PO). Costruire prima la matrice delle lunghezze con propagazione dei vincoli (backtracking con limiti per riga/colonna), poi assegnare le carte onore per posizione secondo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;..., infine le basse.&lt;br /&gt;
# &#039;&#039;&#039;Riparazione PO&#039;&#039;&#039;: dopo l&#039;assegnazione, se i PO (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, controlli, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sono fuori intervallo, scambiare due carte tra due mani preservando lunghezze e vincoli &#039;&#039;rigidi&#039;&#039; (carte fissate, pattern). Ricerca locale con budget; poi nuovo tentativo dall&#039;inizio.&lt;br /&gt;
# &#039;&#039;&#039;Uniformità&#039;&#039;&#039;: l&#039;obiettivo è una distribuzione quasi uniforme tra le smazzate che soddisfano lo scenario. Le euristiche di costruzione introducono distorsioni: misuratele (§7.3) e non dichiarate &amp;quot;uniformi&amp;quot; se non lo sono.&lt;br /&gt;
# &#039;&#039;&#039;Budget e fallimenti&#039;&#039;&#039;: limite di tempo (oggi 2,5 s CPU/mano), massimo tentativi, e diagnosi. Su fallimento restituire 422 con i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di §6, mai una smazzata che viola i vincoli.&lt;br /&gt;
# &#039;&#039;&#039;Riproducibilità&#039;&#039;&#039;: stesso &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + stessa versione del DSL → stessa smazzata. Salvare nel record &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; della pagina se disponibile.&lt;br /&gt;
# &#039;&#039;&#039;Concorrenza e cache&#039;&#039;&#039;: cache del JSON dell&#039;API per pagina con TTL breve (60 s) e rivalidazione sulla &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; mai servire DSL non validato.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Ordine di risoluzione dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, jolly &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (decidono &#039;&#039;quali&#039;&#039; semi).&lt;br /&gt;
# Alternative: scegliere un ramo per ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (escludendo i rami impossibili con i vincoli già noti); applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come vincoli di esclusione.&lt;br /&gt;
# Lunghezze (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Carte precise (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held/not_held&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Conteggi (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Punteggi derivati (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Verifica finale.&lt;br /&gt;
&lt;br /&gt;
Un vincolo è &amp;quot;rigido&amp;quot; se riguarda carte/lunghezze fissate (1-4); &amp;quot;morbido&amp;quot; se si ripara per scambio (5-6).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Semantica delle combinazioni delicate ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è già espanso in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun trattamento speciale (il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; serve solo alla descrizione). Una difesa quiet &#039;&#039;&#039;riduce&#039;&#039;&#039; il margine PO per la coppia dichiarante: verificare la compatibilità prima di costruire (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: devono essere coerenti; l&#039;API segnala le contraddizioni evidenti.&lt;br /&gt;
* Una carta (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) può comparire in una sola posizione; due posizioni con la stessa carta sono un errore di validazione, non un caso da risolvere a caso.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro una posizione con variabili: le variabili si legano &#039;&#039;&#039;prima&#039;&#039;&#039;, poi si sceglie il ramo.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: escludere dall&#039;insieme di alternative, non solo filtrare a posteriori.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono sulle lunghezze finali (dopo il bind delle variabili).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la carta deve stare nella mano dell&#039;attaccante (§2) e quella mano deve soddisfare i suoi vincoli (es. se ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SJ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è coerente, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; no).&lt;br /&gt;
&lt;br /&gt;
=== Chiarimenti (concordati con Play) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la sequenza parte dal &#039;&#039;&#039;mazziere&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;); il primo token è la sua chiamata. Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; manca, l&#039;asta è solo descrittiva e non si verifica nulla. Nella v2 l&#039;asta e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono &#039;&#039;&#039;informativi&#039;&#039;&#039;: il motore non deve ricavarne vincoli sulle mani.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: non deve discendere dall&#039;asta (non verificata). Serve a stabilire chi attacca (vedi §2) e quindi a validare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: array di &#039;&#039;&#039;stringhe&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;&amp;lt;etichetta scenario o &#039;scenario #N&#039;&amp;gt;: &amp;lt;messaggio in inglese&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, senza codici né struttura. Il motore li riporta così come sono (codice proprio &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl_errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, §6). Un formato strutturato (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;code&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenario&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;position&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) è una possibile evoluzione: lo si introdurrebbe come campo nuovo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errorDetails&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, senza toccare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: oggi un elemento per scenario con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (testo per posizione) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &#039;&#039;&#039;non esiste un id per singolo vincolo&#039;&#039;&#039;. Se il frontend lo richiede, si aggiungerà un campo additivo (da concordare, §11).&lt;br /&gt;
* &#039;&#039;&#039;«Uniforme»&#039;&#039;&#039; (variabili, jolly, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): tra le assegnazioni di semi che rendono lo scenario soddisfacibile, ciascuna ha uguale probabilità (a meno di tolleranza statistica nei test: ±5 % su 1000 estrazioni per due valori, vedi caso 3). Non implica uniformità sulle carte o sulle mani.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Funzionalità del motore (elenco completo da realizzare) ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Core (parità v1) — già in produzione, da conservare ===&lt;br /&gt;
Lunghezze, PO totali/per seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(espanso), 422 con ragioni, tetto 2,5 s.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Nuove funzioni DSL v2 ===&lt;br /&gt;
Tutte le righe di §1.1. Priorità di consegna in §9.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Mani multiple e serie ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;count&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ≤ 100 per richiesta; opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;distinct: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nessuna mano duplicata nella serie);&lt;br /&gt;
opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balance: &amp;quot;round_robin&amp;quot; &amp;amp;#124; &amp;quot;weighted&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per distribuire gli scenari della stessa convenzione.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Spiegazione per mano ===&lt;br /&gt;
Per ogni smazzata: per posizione, elenco dei vincoli con esito (✓) e valore effettivo&lt;br /&gt;
(&amp;quot;♥: 5 carte, richiesto 5+&amp;quot;), e i &#039;&#039;&#039;binding&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x di opener = ♦&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Serve al frontend.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 Verifica di una smazzata data ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con quattro mani e una &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → elenco di vincoli soddisfatti/violati.&lt;br /&gt;
Usa lo stesso giudice del §3. Serve a: smazzate inserite a mano, correzione in aula, test.&lt;br /&gt;
&lt;br /&gt;
=== 5.6 Mani parzialmente fissate (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
Accettare mani complete o parziali (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;opener&amp;quot;: &amp;quot;SAK2.&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o carte singole) e completare il resto&lt;br /&gt;
rispettando lo scenario. Se impossibile → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 5.7 Contesto di gioco della carta ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il motore garantisce che la carta d&#039;attacco sia nella mano giusta e&lt;br /&gt;
fornisce nel risultato &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;play: { &amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;, &amp;quot;declarer&amp;quot;:&amp;quot;responder&amp;quot;, &amp;quot;leader&amp;quot;:&amp;quot;opp2&amp;quot;, &amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot; }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
(Il gioco successivo, oltre la prima carta, non è nel DSL: per Segnali e Attacchi la prima carta e le&lt;br /&gt;
mani bastano a mostrare la situazione.)&lt;br /&gt;
&lt;br /&gt;
=== 5.8 Statistiche ===&lt;br /&gt;
Per scenario: tasso di successo, tentativi medi, p95 ms, codici di fallimento. Esposte in&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api/deals/stats&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e inviate a BridgePedia (§8.5) per tarare i vincoli.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Codici di errore (422 e simili) ==&lt;br /&gt;
&lt;br /&gt;
Già in uso: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;exact_cards_always_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;generation_time_limit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_below_hcp_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Da aggiungere:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Codice&lt;br /&gt;
! Quando&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| lo scenario richiede un tag non supportato (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;detail&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il tag)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl_errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| l&#039;API ha restituito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (riportarli)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;variable_unsatisfiable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna assegnazione dei semi variabili rende lo scenario possibile&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contraddice lo scenario o carte duplicate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp/pairtp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibili con i limiti per posizione&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibile con la mano dell&#039;attaccante&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;no_branch_left&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; eliminano tutti i rami&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma/lunghezze incompatibili con 13 carte per mano e per seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;invalid_request&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| parametri non validi (count, seed...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni 422 porta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons: [{code, position?, detail}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; leggibili dal frontend.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Test di conformità e qualità ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Invarianti (property test, ≥ 10.000 smazzate per scenario del wiki) ===&lt;br /&gt;
* 52 carte distinte; 13 per mano; nessun duplicato.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vero per ogni smazzata emessa (il giudice &#039;&#039;&#039;non&#039;&#039;&#039; deve condividere codice con il generatore).&lt;br /&gt;
* Stesso seed → stesso risultato.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Casi minimi per costrutto (la DSL → cosa deve valere) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! #&lt;br /&gt;
! DSL&lt;br /&gt;
! Asserzione&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener S:5+ hcp:12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ♠ ≥ 5, PO in intervallo&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S opener ${M}:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| due scenari generabili (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M opener $a:5+; responder $a:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| in ogni mano: un nobile ≥5 in opener, lo stesso seme ≥3 in responder; entrambi i nobili compaiono su 1000 mani&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M $b=m opener $a:5+ $b:4+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| $a nobile, $b minore, mai lo stesso seme&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su 1000 mani&lt;br /&gt;
| tutte le mani hanno A, Kx, Qxx o Jxxx a ♠&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener nostop:S S:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna mano con A, né Kx, Qxx o Jxxx a ♠ (con 3 carte: né A, né K, né Q)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener aces:2 kc:H3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2 assi; assi + K♥ = 3 (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è impossibile: max 2+1)&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener has:HQ lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Q♥ presente, K♠ assente&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener tp:20-22&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; corretto con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener ltc:6-7&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| LTC con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;=S longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| confronti rispettati; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con pari merito&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 5 e 4 come due semi più lunghi in ordine; gli altri due sommano 4&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| solo 5422 e 6322&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:5+, H:5+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| almeno un nobile ≥ 5&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener not(S:4+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessun nobile ≥ 4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:4+ hcp:12+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| rami composti&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+ ... opp1 quiet; opp2 quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| coppia ≥ 25, avversari entro i limiti quiet&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:1 ... // weight:3 ...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1000 estrazioni ~ 25%/75% (± tolleranza)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opp1 vul:both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| output con dealer/vul corretti e PBN ruotato&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder lead:SJ opp2 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| J♠ in opp2; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con Q♥ in opener&lt;br /&gt;
| opener ha Q♥ e rispetta lo scenario&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| scenario impossibile (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=AK Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
| 422 con ragione&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| scenario con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; simulato&lt;br /&gt;
| 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aggiungere come test di regressione &#039;&#039;&#039;tutti gli scenari reali&#039;&#039;&#039; delle pagine del wiki&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): per ciascuno ≥ 1000 smazzate valide entro il budget, oppure una&lt;br /&gt;
diagnosi documentata. Gli scenari più duri oggi: &#039;&#039;Multirever&#039;&#039; (Gran rever, 20 scenari) e&lt;br /&gt;
&#039;&#039;Segnale di Smith&#039;&#039; (20 scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== 7.3 Qualità statistica ===&lt;br /&gt;
Per ogni scenario del wiki misurare su 5000 mani: distribuzione delle lunghezze e dei PO nei limiti&lt;br /&gt;
consentiti, tasso di riuscita al primo tentativo, tempo p50/p95. Segnalare distorsioni evidenti&lt;br /&gt;
(es. la posizione A prende sempre i PO alti).&lt;br /&gt;
&lt;br /&gt;
=== 7.4 Prestazioni ===&lt;br /&gt;
Obiettivo: p95 &amp;lt; 300 ms per mano sugli scenari comuni; &amp;lt; 2,5 s sul peggiore. Se non si rispetta,&lt;br /&gt;
non allargare i vincoli: segnalare lo scenario a BridgePedia (§8.5) che può rivederlo.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 8. Frontend di Play ==&lt;br /&gt;
&lt;br /&gt;
Il frontend deve permettere di &#039;&#039;&#039;consultare&#039;&#039;&#039;, &#039;&#039;&#039;generare&#039;&#039;&#039;, &#039;&#039;&#039;creare&#039;&#039;&#039; e &#039;&#039;&#039;gestire&#039;&#039;&#039; smazzate.&lt;br /&gt;
Lingua: italiano, con i18n predisposta (en, fr, es, de). Tutti i testi dei vincoli vengono&lt;br /&gt;
dall&#039;API (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, parametro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): non riscriverli.&lt;br /&gt;
&lt;br /&gt;
=== 8.1 Catalogo delle convenzioni ===&lt;br /&gt;
* Elenco da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con vincoli) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutte, con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hasShape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Per ogni voce: titolo, numero di scenari, link alla pagina del wiki, stato: &#039;&#039;generabile&#039;&#039;, &#039;&#039;parzialmente generabile&#039;&#039; (alcuni scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non supportato), &#039;&#039;non generabile&#039;&#039;.&lt;br /&gt;
* Ricerca testuale; filtri per tipologia/sistema se esposti; badge &amp;quot;da verificare&amp;quot; per le traduzioni non verificate.&lt;br /&gt;
* Le 27 convenzioni senza vincoli compaiono come &amp;quot;scenari in arrivo&amp;quot; con link al wiki.&lt;br /&gt;
&lt;br /&gt;
=== 8.2 Visualizzatore di scenario ===&lt;br /&gt;
* Tabella a colonne per posizione (come la tabella del wiki): etichetta scenario, frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[i].positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (rispettare i ruoli personalizzati, es. &amp;quot;Attaccante&amp;quot;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Semi ♥ ♦ in rosso. Mostrare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come chip (tooltip con spiegazione).&lt;br /&gt;
* Pulsante &amp;quot;Mostra DSL&amp;quot; (testo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;quot;Apri la pagina nel wiki&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 8.3 Generatore ===&lt;br /&gt;
* Scelta convenzione → scenario (singolo, &amp;quot;a caso&amp;quot;, &amp;quot;tutti a rotazione&amp;quot;, pesato) → quantità (1-100) → opzioni (seed, mani distinte, nascondi avversari).&lt;br /&gt;
* Risultato: schede smazzata con 4 mani (formato BridgeCards: ♠♥♦♣, bordi, dealer, vulnerabilità), etichetta scenario, &#039;&#039;&#039;pannello &amp;quot;perché questa mano&amp;quot;&#039;&#039;&#039;: per posizione le frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con spunta, binding (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), PO/lunghezze effettive.&lt;br /&gt;
* Azioni per smazzata: rigenera, &amp;quot;blocca questa mano e rigenera le altre&amp;quot; (usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), copia link con seed, esporta PBN/LIN/immagine, aggiungi alla raccolta.&lt;br /&gt;
* Se la licita &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è presente: mostrarla con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bidding&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stile BridgeCards) o nascosta per esercizio (&amp;quot;indovina la risposta&amp;quot;).&lt;br /&gt;
* Gestione 422: messaggio per codice (§6) con suggerimento (&amp;quot;lo scenario è impossibile perché...&amp;quot;). Per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: spiegare quale capacità manca.&lt;br /&gt;
&lt;br /&gt;
=== 8.4 Editor / creazione di scenari ===&lt;br /&gt;
Due modalità sincronizzate:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Modulo guidato&#039;&#039;&#039; per posizione (Apertore, Compagno, Avv. sinistro, Avv. destro):&lt;br /&gt;
#* lunghezze per seme (slider min-max), PO totali e per seme, forma (classi + schema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* griglia carte per seme (A K Q J 10 9 + &amp;quot;basse&amp;quot;) con stati &#039;&#039;deve avere / non deve avere / indifferente&#039;&#039; che produce &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; costruttore di pattern per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con anteprima;&lt;br /&gt;
#* interruttori: fermata (per seme), assi/re/dame/controlli, carte chiave con atout, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp/dp/ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti tra semi, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come gruppi aggiungibili;&lt;br /&gt;
#* variabili di seme &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con dominio (nobili/minori/qualsiasi);&lt;br /&gt;
#* contesto: dealer, vulnerabilità, licita, contratto, attacco, peso;&lt;br /&gt;
#* avversari: pulsante &#039;&#039;&#039;quiet&#039;&#039;&#039; (e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet:max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* macro: &amp;quot;ripeti per ogni nobile / minore / seme&amp;quot; genera &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Editor testuale&#039;&#039;&#039; del DSL con evidenziazione, completamento e &#039;&#039;validazione live&#039;&#039;: chiama &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (debounce 400 ms) e mostra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con il supporto del motore). Le due modalità si convertono a vicenda (modulo → DSL è obbligatorio; DSL → modulo almeno per i costrutti elementari, il resto resta testuale).&lt;br /&gt;
&lt;br /&gt;
* Pulsante &amp;quot;Prova&amp;quot;: genera 5 mani di test dallo scenario in modifica e mostra tempi e tassi di riuscita.&lt;br /&gt;
* Salvataggio come &#039;&#039;&#039;bozza personale&#039;&#039;&#039; in Play (non scrive sul wiki). Pulsante &amp;quot;Copia per BridgePedia&amp;quot; produce la riga &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; da incollare nella pagina (gli editor del wiki fanno il resto).&lt;br /&gt;
* Libreria di &#039;&#039;&#039;modelli&#039;&#039;&#039; presi dalle convenzioni del wiki (&amp;quot;parti da Landy&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== 8.5 Retroazione verso BridgePedia ===&lt;br /&gt;
* Pulsante &amp;quot;Segnala scenario problematico&amp;quot; (lento / troppo raro / 422 / distribuzione strana) che invia: pagina, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, codice errore, statistiche (§5.8) al canale concordato (sessione/issue). Nessuna scrittura diretta sul wiki.&lt;br /&gt;
* Report periodico automatico delle statistiche di generazione per scenario.&lt;br /&gt;
&lt;br /&gt;
=== 8.6 Smazzate manuali ===&lt;br /&gt;
* Compositore: assegnare le 52 carte alle quattro mani con trascinamento o digitazione (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;AK2.QJ5.K84.T65&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), controllo duplicati, completamento casuale delle carte mancanti (opzionalmente rispettando uno scenario: usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Pulsante &amp;quot;Verifica rispetto a uno scenario&amp;quot; (§5.5) con l&#039;elenco dei vincoli soddisfatti e violati.&lt;br /&gt;
* Importa/esporta PBN, LIN, testo semplice.&lt;br /&gt;
&lt;br /&gt;
=== 8.7 Gestione delle smazzate ===&lt;br /&gt;
* Raccolte (&amp;quot;mazzi di esercizio&amp;quot;): nome, descrizione, convenzione, tag; ordinamento; duplicati evitati.&lt;br /&gt;
* Ricerca per convenzione, scenario, tag, data; filtri per vulnerabilità, dealer.&lt;br /&gt;
* Metadati salvati: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, data, autore.&lt;br /&gt;
* Note personali per smazzata; stampa di una raccolta (fogli A4 con 4 o 6 smazzate per pagina, versione &amp;quot;solo mano dell&#039;apertore&amp;quot; per esercizio).&lt;br /&gt;
* Condivisione: link con seed/raccolta, permessi (privato, gruppo, pubblico) secondo il modello utenti di Play. Esportazione in blocco (PBN).&lt;br /&gt;
* Modalità &amp;quot;esercizio di licita&amp;quot;: mostra le mani di un lato, l&#039;utente inserisce la licita, il frontend confronta con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se presente.&lt;br /&gt;
&lt;br /&gt;
=== 8.8 Requisiti trasversali ===&lt;br /&gt;
* Mobile first; tastiera accessibile; semi anche come lettere per daltonici.&lt;br /&gt;
* Nessuna dipendenza dal wiki per il rendering delle carte (usare componenti propri; stile coerente con BridgeCards).&lt;br /&gt;
* Tempi: la generazione deve mostrare avanzamento e poter essere annullata.&lt;br /&gt;
* Tracciare (analytics interni) tempi, errori e scenari più usati.&lt;br /&gt;
* Testo dei vincoli sempre da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; coerente con la lingua dell&#039;interfaccia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 9. Piano di consegna consigliato ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fase&lt;br /&gt;
! Contenuto&lt;br /&gt;
! Esito atteso&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P0 — compatibilità&#039;&#039;&#039; (subito)&lt;br /&gt;
| leggere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; esporre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; rifiutare con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; giudice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per v1&lt;br /&gt;
| nessuna smazzata errata con le pagine nuove&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P1 — core v2&#039;&#039;&#039;&lt;br /&gt;
| macro (nessun lavoro, già espanse), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, classi nuove, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scenari per Landy/Cappelletti/DONT/Smolen con forme e alternative&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P2 — variabili e carte&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; condivise tra posizioni, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has/lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces/kings/queens/controls/kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Michaels, Sputnik, Lebensohl, Blackwood/RKCB, Exclusion&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P3 — punteggi&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| sistemi a forza (Fiori forte, 2♣ forte, Gazzilli)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P4 — frontend lettura&#039;&#039;&#039;&lt;br /&gt;
| catalogo, visualizzatore, generatore con spiegazioni&lt;br /&gt;
| tutti possono provare le convenzioni&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P5 — frontend creazione&#039;&#039;&#039;&lt;br /&gt;
| editor guidato + testuale con validazione live, &amp;quot;Prova&amp;quot;, bozze&lt;br /&gt;
| gli editor creano e collaudano scenari senza il wiki&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P6 — gestione&#039;&#039;&#039;&lt;br /&gt;
| raccolte, smazzate manuali, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, esportazioni, esercizi di licita&lt;br /&gt;
| uso didattico completo&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P7 — qualità&#039;&#039;&#039;&lt;br /&gt;
| suite di conformità (§7), statistiche, report verso BridgePedia&lt;br /&gt;
| motore misurabile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni fase deve chiudersi con i test di §7 per i costrutti introdotti. BridgePedia estende le&lt;br /&gt;
pagine del wiki man mano che i tag diventano disponibili: &#039;&#039;&#039;comunicate a ogni fase la lista dei tag supportati&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) così il wiki passa dalle approssimazioni (pattern &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ai&lt;br /&gt;
costrutti nativi solo quando il motore li regge.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 10. Cosa fa BridgePedia (per non sovrapporsi) ==&lt;br /&gt;
&lt;br /&gt;
* Mantiene il DSL, il parser, le descrizioni e l&#039;API; aggiunge costrutti su richiesta motivata.&lt;br /&gt;
* Scrive e tiene aggiornati gli scenari nelle pagine delle convenzioni; le 27 mancanti saranno coperte via via con i costrutti v2.&lt;br /&gt;
* Fornisce il catalogo di ricette (come descrivere Landy, Blackwood, un attacco sotto onore...).&lt;br /&gt;
* Riceve da Play le segnalazioni di §8.5 e rivede i vincoli troppo duri.&lt;br /&gt;
&lt;br /&gt;
== 11. Decisioni aperte (da concordare con Play) ==&lt;br /&gt;
&lt;br /&gt;
# Definizione definitiva delle classi di forma (§2) rispetto a quanto già implementato.&lt;br /&gt;
# Formato di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (testo semplice vs struttura con esito per vincolo).&lt;br /&gt;
# Modello di persistenza e permessi delle raccolte (utenti Play).&lt;br /&gt;
# Canale per le segnalazioni verso BridgePedia (§8.5).&lt;br /&gt;
# Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; deve accettare anche vincoli aggiuntivi temporanei (override locali dello scenario).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=1992</id>
		<title>Progetto:BridgeShape API</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=1992"/>
		<updated>2026-10-23T16:31:39Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Aggiornamento da DEAL_GENERATOR_API.md (LTC, semi_balanced, jolly x, chiarimenti)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — API per Generatori di Smazzate =&lt;br /&gt;
&lt;br /&gt;
Documentazione tecnica per chi sviluppa un generatore di smazzate di test&lt;br /&gt;
che legge i vincoli di distribuzione (shape constraints) dalle convenzioni&lt;br /&gt;
di BridgePedia.&lt;br /&gt;
&lt;br /&gt;
== Panoramica ==&lt;br /&gt;
&lt;br /&gt;
Ogni pagina wiki di convenzione su BridgePedia può definire nel template&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Convenzione}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; un campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che descrive, in un formato&lt;br /&gt;
DSL compatto, i vincoli di distribuzione delle mani dei 4 giocatori al tavolo.&lt;br /&gt;
&lt;br /&gt;
L&#039;estensione &#039;&#039;&#039;BridgeShape&#039;&#039;&#039; espone un&#039;API REST/JSON per leggere questi&lt;br /&gt;
vincoli in modo strutturato.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== API Endpoint ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GET /api.php?action=bridgeshape&amp;amp;shapeaction=ACTION&amp;amp;format=json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Azioni disponibili ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Azione&lt;br /&gt;
! Descrizione&lt;br /&gt;
! Parametri&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Vincoli per una singola convenzione&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pageid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;title&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco convenzioni con vincoli definiti&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco tutte le convenzioni (con/senza vincoli)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Valida una stringa DSL senza bisogno di una pagina wiki&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi di chiamata ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Per titolo pagina&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;title=Splinter&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Per page ID&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;pageid=42&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Elenco pagine con vincoli&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Validare una stringa DSL&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=validate&amp;amp;dsl=opener+H:5%2B+hcp:12-21&amp;amp;format=json&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato risposta JSON ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;shapeconstraints&amp;quot;: {&lt;br /&gt;
    &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
    &amp;quot;raw&amp;quot;: &amp;quot;1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 // ...&amp;quot;,&lt;br /&gt;
    &amp;quot;scenarios&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;1H-4C&amp;quot;,&lt;br /&gt;
        &amp;quot;positions&amp;quot;: {&lt;br /&gt;
          &amp;quot;opener&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 5, &amp;quot;max&amp;quot;: null }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 12, &amp;quot;max&amp;quot;: 21 }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;responder&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 4, &amp;quot;max&amp;quot;: null },&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 1 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;suit_hcp&amp;quot;: {&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 0 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 10, &amp;quot;max&amp;quot;: 15 }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fit&amp;quot;: []&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Descrizioni leggibili.&#039;&#039;&#039; Insieme a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stesso ordine): per ogni scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;label&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(per posizione, elenco di frasi già tradotte, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;♠: ha K J 10 (e non A Q 9)&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nome del ruolo, es. &amp;quot;Attaccante&amp;quot; se la pagina ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
altrimenti &amp;quot;Apertore (chi usa la convenzione)&amp;quot;, &amp;quot;Compagno&amp;quot;, ...) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Parametro opzionale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (it, en, ...; default lingua dell&#039;API, di solito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;it&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
Serve a mostrare nell&#039;interfaccia di Play &#039;&#039;&#039;perché&#039;&#039;&#039; la mano è fatta così.&lt;br /&gt;
Nella posizione compare anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se è stata usata la macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pages&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Splinter&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 6,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;1H-4C&amp;quot;, &amp;quot;1H-4D&amp;quot;, &amp;quot;1H-4S&amp;quot;, &amp;quot;1S-4C&amp;quot;, &amp;quot;1S-4D&amp;quot;, &amp;quot;1S-4H&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 15,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Stayman&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 2,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;fit a cuori&amp;quot;, &amp;quot;fit a picche&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato DSL ==&lt;br /&gt;
&lt;br /&gt;
Il DSL (Domain Specific Language) è la stringa scritta nel campo&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; del template wiki.&lt;br /&gt;
&lt;br /&gt;
=== Struttura ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
etichetta: vincoli posizione; vincoli posizione // etichetta: vincoli // ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;//&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa gli scenari (il generatore ne sceglie uno random o li presenta all&#039;utente)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa le posizioni dentro uno scenario&lt;br /&gt;
* Ogni scenario ha un&#039;&#039;&#039;&#039;etichetta&#039;&#039;&#039; opzionale seguita da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Ogni posizione inizia col nome del ruolo, seguito da vincoli separati da spazi&lt;br /&gt;
&lt;br /&gt;
=== Posizioni ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Nome&lt;br /&gt;
! Ruolo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Chi apre o fa la prima licita convenzionale&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Il compagno dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a sinistra dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a destra dell&#039;opener (compagno di opp1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vincoli ===&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:5+       — almeno 5 picche&lt;br /&gt;
H:0-1      — 0 o 1 cuori&lt;br /&gt;
D:3        — esattamente 3 quadri&lt;br /&gt;
C:2-5      — da 2 a 5 fiori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Semi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Spades/Picche, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Hearts/Cuori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;D&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Diamonds/Quadri, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Clubs/Fiori&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
x:0-1      — un seme qualsiasi (tra quelli non specificati) con 0-1 carte&lt;br /&gt;
x:6+       — un seme non specificato con almeno 6 carte&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il generatore sceglie casualmente quale seme assegnare a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tra quelli&lt;br /&gt;
non già vincolati esplicitamente (S/H/D/C).&lt;br /&gt;
&lt;br /&gt;
==== HCP totali ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
hcp:15-17  — da 15 a 17 punti onore&lt;br /&gt;
hcp:12+    — almeno 12 punti&lt;br /&gt;
hcp:0-7    — da 0 a 7 punti&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Shcp:3+    — almeno 3 HCP a picche&lt;br /&gt;
Chcp:0     — 0 HCP a fiori (nessun onore)&lt;br /&gt;
Hhcp:0-2   — da 0 a 2 HCP a cuori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
xhcp:0     — 0 HCP nel seme wildcard (x)&lt;br /&gt;
xhcp:0-1   — 0-1 HCP nel seme x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shape class ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
shape:balanced      — distribuzione bilanciata (4333, 4432, 5332)&lt;br /&gt;
shape:semi_balanced — semibilanciata (5422, 6322)&lt;br /&gt;
shape:one_suiter    — monocolore&lt;br /&gt;
shape:two_suiter    — bicolore&lt;br /&gt;
shape:three_suiter  — tricolore&lt;br /&gt;
shape:any           — qualsiasi (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Onori esatti in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S=KJT      — in picche ha K, J e 10; NON ha A, Q, 9 (le carte basse 8-2 completano)&lt;br /&gt;
S=KT9      — sequenza interna: K, 10, 9; NON ha A, Q, J&lt;br /&gt;
H=Q        — a cuori ha la Q come unico onore tra A K Q J 10&lt;br /&gt;
D=x        — nessun onore a quadri (solo carte basse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le lettere ammesse sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La regola è: &#039;&#039;&#039;le carte elencate sono possedute, le altre tra A K Q J 10 9 NON lo sono&#039;&#039;&#039;; le carte&lt;br /&gt;
dall&#039;8 in giù sono libere e riempiono fino alla lunghezza del seme. Serve a&lt;br /&gt;
descrivere attacchi (sequenza interrotta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, interna &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, sotto onore &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;K&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Q&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e le carte del compagno. Si combina con la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:5 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;quot;S&amp;quot;: &amp;quot;KJT&amp;quot;, &amp;quot;H&amp;quot;: &amp;quot;&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(stringa vuota = nessuna carta alta). Il generatore deve:&lt;br /&gt;
* assegnare esattamente quegli onori alla mano e &#039;&#039;&#039;escluderli&#039;&#039;&#039; dalle altre mani del seme; gli onori non nominati da nessuna posizione sono distribuiti a caso, ma mai a una posizione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per quel seme che non li elenca;&lt;br /&gt;
* rispettare comunque &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (la validazione segnala le contraddizioni, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KQ Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o lo stesso onore a due mani).&lt;br /&gt;
&lt;br /&gt;
==== Pattern di mano in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, stile regex) ====&lt;br /&gt;
&lt;br /&gt;
Descrive &#039;&#039;&#039;l&#039;intera mano in quel seme&#039;&#039;&#039;, dall&#039;alto in basso, come una piccola&lt;br /&gt;
espressione regolare ancorata (inizio e fine):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S~AKQ.          — A, K, Q + una carta bassa (4 carte)&lt;br /&gt;
S~A...          — A + tre carte basse (4 carte)&lt;br /&gt;
S~AJT9.         — A, J, 10, 9 + una bassa&lt;br /&gt;
S~AKQ.|A...     — alternative: una OPPURE l&#039;altra&lt;br /&gt;
S~[KQ]x{2,3}    — K o Q (come unico onore) + 2 o 3 carte basse&lt;br /&gt;
S~KJT.*         — K, J, 10 + qualunque numero di basse (anche zero)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi:&lt;br /&gt;
* &#039;&#039;&#039;Carte alte&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &#039;&#039;&#039;sempre in ordine decrescente&#039;&#039;&#039;, ciascuna posseduta; quelle non nominate tra A K Q J 10 9 NON sono possedute.&lt;br /&gt;
* &#039;&#039;&#039;Classe&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[KQ]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = una carta tra quelle (si espande in alternative).&lt;br /&gt;
* &#039;&#039;&#039;Carta bassa&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) = una carta qualsiasi tra 8 e 2; compare solo in fondo. Quantificatori: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;?&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0-1), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (1 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n,m}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Più punti si sommano (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = tre basse).&lt;br /&gt;
* &#039;&#039;&#039;Alternative&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il generatore ne sceglie una a caso per ogni mano.&lt;br /&gt;
&lt;br /&gt;
È la forma più espressiva di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che resta valida): il pattern fissa anche&lt;br /&gt;
la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 4 carte). Se c&#039;è anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; i due vincoli devono&lt;br /&gt;
essere compatibili (la validazione API segnala le incompatibilità).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, già &#039;&#039;&#039;normalizzato&#039;&#039;&#039; (classi&lt;br /&gt;
espanse, quantificatori risolti), così il generatore non deve interpretare la&lt;br /&gt;
regex:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;suit_patterns&amp;quot;: {&lt;br /&gt;
  &amp;quot;S&amp;quot;: [&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;AKQ&amp;quot;, &amp;quot;low_min&amp;quot;: 1, &amp;quot;low_max&amp;quot;: 1},&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;A&amp;quot;,   &amp;quot;low_min&amp;quot;: 3, &amp;quot;low_max&amp;quot;: 3}&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = carte alte possedute (ordine A K Q J T 9); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; =&lt;br /&gt;
numero di carte basse (2-8), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessun limite. La lunghezza del&lt;br /&gt;
seme è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;len(cards) + numero di basse&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Il generatore sceglie una alternativa e&lt;br /&gt;
rispetta anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Gli onori di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vanno esclusi dalle altre&lt;br /&gt;
mani; quelli non nominati nella mano vanno ad altri a caso.&lt;br /&gt;
&lt;br /&gt;
==== Avversari &amp;quot;quiet&amp;quot; (nessun intervento) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opp1 quiet           — solo per opp1/opp2&lt;br /&gt;
opp2 quiet:0-7       — come quiet, ma con HCP personalizzati&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è una &#039;&#039;&#039;macro espansa dall&#039;API&#039;&#039;&#039;: nel JSON non compare mai la parola&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ma i vincoli già risolti. Chi legge l&#039;API (il generatore) non deve&lt;br /&gt;
implementare nulla di nuovo. Si espande in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:0-4 H:0-4 D:0-5 C:0-5 hcp:0-9 Shcp:0-3 Hhcp:0-3 Dhcp:0-4 Chcp:0-4&lt;br /&gt;
(con quiet:0-7 → hcp:0-7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significato: gli avversari possono avere colori lunghi (così le mani sono&lt;br /&gt;
varie), ma poveri di onori e con pochi punti: nessun colore da 6+ carte&lt;br /&gt;
(niente apertura di sbarramento), nessun contro informativo, nessun intervento&lt;br /&gt;
naturale credibile. Le distribuzioni ammesse sono quindi molte, ma con punti&lt;br /&gt;
ridotti: il generatore ha meno margine sugli HCP della coppia dichiarante&lt;br /&gt;
(40 punti totali: apertore+rispondente restano sopra ~22).&lt;br /&gt;
I token espliciti scritti sulla stessa posizione &#039;&#039;&#039;sostituiscono&#039;&#039;&#039; i default,&lt;br /&gt;
in qualsiasi ordine: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1 quiet S:0-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; lascia le picche 0-4 e tiene il resto.&lt;br /&gt;
Su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; la macro viene ignorata.&lt;br /&gt;
&lt;br /&gt;
==== Fit (vincolo cross-posizione) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit:H8+    — almeno 8 cuori totali tra i compagni&lt;br /&gt;
fit:S9+    — almeno 9 picche totali tra i compagni&lt;br /&gt;
fit:M8+    — almeno 8 carte in un seme maggiore (H o S)&lt;br /&gt;
fit:m8+    — almeno 8 carte in un seme minore (D o C)&lt;br /&gt;
fit:8+     — almeno 8 carte in un seme qualsiasi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fit si applica tra &#039;&#039;&#039;compagni&#039;&#039;&#039;:&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o a livello di scenario → coppia dichiarante&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → coppia difensiva&lt;br /&gt;
&lt;br /&gt;
=== Formato range ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sintassi&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Almeno 5 (min=5, max=null)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0-1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 0 a 1 (min=0, max=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Esattamente 3 (min=3, max=3)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 12 a 21 (min=12, max=21)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nella risposta JSON, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; significa &amp;quot;nessun limite superiore&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Semi non menzionati ===&lt;br /&gt;
&lt;br /&gt;
I semi &#039;&#039;&#039;non vincolati&#039;&#039;&#039; e non coperti da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono distribuiti &#039;&#039;&#039;casualmente&#039;&#039;&#039;&lt;br /&gt;
dal generatore, rispettando il vincolo che il totale delle carte per mano sia 13.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== DSL versione 2 (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion: 2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
Tutto ciò che sopra resta valido e &#039;&#039;&#039;invariato&#039;&#039;&#039;: i campi v1 hanno lo stesso significato di prima.&lt;br /&gt;
La v2 aggiunge sintassi nuova; &#039;&#039;&#039;ogni scenario ha nel JSON il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (elenco di tag,&lt;br /&gt;
vuoto se usa solo la v1; vedi sotto) così un motore parziale può rifiutare uno scenario con un&lt;br /&gt;
errore esplicito invece di generare mani sbagliate. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[].context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è sempre presente&lt;br /&gt;
(array, eventualmente vuoto).&lt;br /&gt;
Le definizioni normative (cosa è una fermata, i punti totali, le perdenti...) e&lt;br /&gt;
l&#039;architettura del motore sono in &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_ENGINE_SPEC.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Macro di scrittura (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@NOME=v1,v2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) — risolte dal parser, il motore non le vede ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S  1${M}: opener ${M}:5+ hcp:12-21; responder ${M}:3+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Genera due scenari (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sostituendo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;${M}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ovunque, etichetta compresa.&lt;br /&gt;
Più prefissi fanno il prodotto cartesiano (max 64 scenari): &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S @N=15-17,12-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
I valori possono essere intervalli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp:${N}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): servono anche come parametri del&lt;br /&gt;
sistema (SA 15-17 contro 14-16).&lt;br /&gt;
&lt;br /&gt;
=== Semi variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b $c $d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Un seme &amp;quot;da scegliere&amp;quot; condiviso da più posizioni dello stesso scenario. Ogni&lt;br /&gt;
variabile è un seme diverso dalle altre. Dominio dichiarato a livello di scenario&lt;br /&gt;
(prima delle posizioni):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Landy: $a=M $b=any  opener hcp:12-21 ; opp1 $a:5+ $b:4+ ; responder $a:0-2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nobili, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=m&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; minori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (default) qualunque, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SH&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; insieme esplicito.&lt;br /&gt;
Una variabile non dichiarata vale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutti i semi). Si usano al posto di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lunghezza), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$ahcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=KQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:$aQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;gt;$b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Differisce da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che vale per una sola posizione).&lt;br /&gt;
JSON: lo stesso dizionario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ... ma con chiave &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
a livello di scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;vars&amp;quot;: {&amp;quot;$a&amp;quot;: [&amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;]}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Controlli, carte chiave, carte precise ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Token&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings:1-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens:0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| numero di assi / re / dame nella mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| controlli (A=2, K=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H2-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte chiave con atout H: i 4 assi + il Re di H (0-5)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:S10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| possiede quella carta precisa&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NON possiede quella carta&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ha / non ha una fermata nel seme (definizione in SPEC)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards: {&amp;quot;H&amp;quot;: Range}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held: [&amp;quot;HQ&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_not_held: [&amp;quot;SK&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers: {&amp;quot;S&amp;quot;: 1, &amp;quot;H&amp;quot;: 0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(1 = deve averla, 0 = non deve averla).&lt;br /&gt;
&lt;br /&gt;
=== Punti e perdenti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti totali (PO + 1 per ogni carta oltre la quarta in ogni seme),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti distribuzione (PO + 3 chicane + 2 singolo + 1 doubleton),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; perdenti (Losing Trick Count). A livello di scenario: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(PO della coppia dichiarante), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defhcp:0-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (coppia avversaria), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairtp:26+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range) nella posizione; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp: {&amp;quot;declarer&amp;quot;: R, &amp;quot;defense&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp: {&amp;quot;declarer&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nello scenario.&lt;br /&gt;
&lt;br /&gt;
=== Confronti tra semi e forme precise ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
H&amp;gt;S   H&amp;gt;=S   H&amp;lt;S   H&amp;lt;=S   H==S   $a&amp;gt;$b      — confronto di lunghezze nella stessa mano&lt;br /&gt;
longest:H                                      — H è tra i semi più lunghi (pari merito ammesso)&lt;br /&gt;
shape:5-4-x-x   shape:5422   shape:54xx        — lunghezze ordinate in modo decrescente, x = qualsiasi&lt;br /&gt;
shape:semi_balanced                            — 5422 e 6322 (si aggiunge alle classi esistenti)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare: [{&amp;quot;left&amp;quot;:&amp;quot;H&amp;quot;,&amp;quot;op&amp;quot;:&amp;quot;&amp;gt;=&amp;quot;,&amp;quot;right&amp;quot;:&amp;quot;S&amp;quot;}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest: [&amp;quot;H&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern: &amp;quot;54xx&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Alternative e negazioni nella stessa mano: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener any(S:4+ hcp:12+, H:4+)   not(D:6+)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano soddisfa &#039;&#039;&#039;almeno una&#039;&#039;&#039; delle alternative (separate da virgola;&lt;br /&gt;
ogni alternativa è una congiunzione di token). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano non soddisfa&lt;br /&gt;
&#039;&#039;&#039;nessuna&#039;&#039;&#039; delle alternative. Si possono scrivere più gruppi (si combinano in AND);&lt;br /&gt;
niente annidamenti.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any: [[altA, altB], ...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lista di gruppi; ogni alternativa è un oggetto&lt;br /&gt;
con gli stessi campi di una posizione), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not: [altA, altB]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Contesto dello scenario ===&lt;br /&gt;
&lt;br /&gt;
Token prima delle posizioni: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (frequenza relativa, 1-100, default 1),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul:none&amp;amp;#124;us&amp;amp;#124;them&amp;amp;#124;both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = apertore+rispondente),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction:1SA,P,2C,P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (licite, notazione BridgeCards; SA = NT), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract:4H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (int) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context: {&amp;quot;dealer&amp;quot;:..,&amp;quot;vul&amp;quot;:..,&amp;quot;auction&amp;quot;:[..],&amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;,&amp;quot;declarer&amp;quot;:..,&amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Il motore deve usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando li espone (per la numerazione del tavolo) e,&lt;br /&gt;
se c&#039;è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, la carta deve stare nella mano dell&#039;attaccante (a sinistra del&lt;br /&gt;
dichiarante) e rispettare i vincoli di quella mano.&lt;br /&gt;
&lt;br /&gt;
=== Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (has/lacks),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (aces/kings/queens/controls/kc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tp/dp/ltc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (confronti, longest), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non compaiono: sono già espanse.&lt;br /&gt;
&lt;br /&gt;
=== Avvisi di parsing (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando un frammento del DSL non è stato&lt;br /&gt;
capito e quindi &#039;&#039;&#039;scartato&#039;&#039;&#039;: nome di posizione sbagliato, token sconosciuto o con valore&lt;br /&gt;
non valido (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:5&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=Kx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:4-5-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), token di scenario dopo le posizioni, posizione&lt;br /&gt;
definita due volte, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su opener/responder, gruppo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con alternative non&lt;br /&gt;
valide (in tal caso &#039;&#039;&#039;l&#039;intero gruppo è ignorato&#039;&#039;&#039;, mai applicato a metà). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate.valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è 1&lt;br /&gt;
solo se non ci sono né &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; né &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Un motore non deve generare se ci sono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Limiti (oltre i quali il parser avvisa e tronca): 60.000 caratteri di input, 200 scenari, 6&lt;br /&gt;
prefissi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, 64 valori per macro, 64 scenari per espansione, 8 gruppi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e 16 alternative&lt;br /&gt;
per posizione. Le etichette non possono contenere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Struttura JSON di uno scenario ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typescript&amp;quot;&amp;gt;&lt;br /&gt;
interface Scenario {&lt;br /&gt;
  label: string;           // Etichetta (es. &amp;quot;1H-4C&amp;quot;), vuota se non specificata&lt;br /&gt;
  positions: {&lt;br /&gt;
    [posName: string]: Position;  // &amp;quot;opener&amp;quot;, &amp;quot;responder&amp;quot;, &amp;quot;opp1&amp;quot;, &amp;quot;opp2&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  fit: FitConstraint[];    // Vincoli di fit (array, può essere vuoto)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Position {&lt;br /&gt;
  suit_patterns?: {         // Pattern regex-like normalizzati: {&amp;quot;S&amp;quot;:[{&amp;quot;cards&amp;quot;:&amp;quot;AKQ&amp;quot;,&amp;quot;low_min&amp;quot;:1,&amp;quot;low_max&amp;quot;:1}]}&lt;br /&gt;
    [suit: string]: { cards: string; low_min: number; low_max: number | null }[];&lt;br /&gt;
  };&lt;br /&gt;
  suit_cards?: { [suit: string]: string };  // Onori esatti, es. {&amp;quot;S&amp;quot;:&amp;quot;KJT&amp;quot;}; &amp;quot;&amp;quot; = nessuna carta alta&lt;br /&gt;
  suits?: {                // Vincoli lunghezza seme (solo semi esplicitati)&lt;br /&gt;
    [suit: string]: Range; // &amp;quot;S&amp;quot;, &amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;C&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  hcp?: Range;             // HCP totali&lt;br /&gt;
  suit_hcp?: {             // HCP per seme specifico&lt;br /&gt;
    [suit: string]: Range;&lt;br /&gt;
  };&lt;br /&gt;
  x?: Range;               // Lunghezza seme wildcard&lt;br /&gt;
  x_hcp?: Range;           // HCP seme wildcard&lt;br /&gt;
  shape?: string;          // Shape class: &amp;quot;balanced&amp;quot;, &amp;quot;one_suiter&amp;quot;, etc.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Range {&lt;br /&gt;
  min: number;&lt;br /&gt;
  max: number | null;      // null = nessun limite superiore&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface FitConstraint {&lt;br /&gt;
  suit: string | null;      // &amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;,&amp;quot;D&amp;quot;,&amp;quot;C&amp;quot; o null&lt;br /&gt;
  suit_class: string | null; // &amp;quot;major&amp;quot;, &amp;quot;minor&amp;quot; o null&lt;br /&gt;
  min: number;              // Numero minimo di carte (es. 8)&lt;br /&gt;
  pair: string;             // &amp;quot;declarer&amp;quot; o &amp;quot;defense&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logica per il generatore ==&lt;br /&gt;
&lt;br /&gt;
=== Algoritmo base ===&lt;br /&gt;
&lt;br /&gt;
Per ogni scenario:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Scegli lo scenario&#039;&#039;&#039;: random tra quelli disponibili, oppure lascia scegliere all&#039;utente&lt;br /&gt;
# &#039;&#039;&#039;Risolvi wildcard&#039;&#039;&#039;:&lt;br /&gt;
#* Se una posizione ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scegli un seme casuale tra quelli non esplicitamente vincolati&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si applica allo stesso seme scelto per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Risolvi fit&#039;&#039;&#039;:&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è specificato, entrambi i compagni devono avere un totale &amp;gt;= &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in quel seme&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit_class&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;quot;major&amp;quot;, scegli tra H e S; se &amp;quot;minor&amp;quot;, tra D e C&lt;br /&gt;
#* Se entrambi sono null, scegli un seme qualsiasi&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.pair&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; indica quale coppia: &amp;quot;declarer&amp;quot; (opener+responder) o &amp;quot;defense&amp;quot; (opp1+opp2)&lt;br /&gt;
# &#039;&#039;&#039;Genera le mani&#039;&#039;&#039;:&lt;br /&gt;
#* Per ogni posizione, genera una mano che rispetti tutti i vincoli&lt;br /&gt;
#* I semi senza vincoli vengono riempiti casualmente&lt;br /&gt;
#* Il totale delle carte per mano deve essere esattamente 13&lt;br /&gt;
#* Il totale delle carte per seme (tutte e 4 le mani) deve essere esattamente 13&lt;br /&gt;
# &#039;&#039;&#039;Posizioni non menzionate&#039;&#039;&#039;: se uno scenario non menziona &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, distribuisci le carte rimanenti casualmente tra gli avversari&lt;br /&gt;
&lt;br /&gt;
=== Priorità dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Vincoli di fit (cross-posizione) — determinano la distribuzione di base&lt;br /&gt;
# Vincoli di seme specifico (S:, H:, D:, C:) — limitano i singoli semi&lt;br /&gt;
# Vincoli wildcard (x:) — dopo aver fissato i semi specifici&lt;br /&gt;
# Vincoli HCP (hcp:, Shcp:, xhcp:) — filtro finale&lt;br /&gt;
# Shape class (shape:) — validazione della forma complessiva&lt;br /&gt;
&lt;br /&gt;
=== Gestione di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Quando &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, non c&#039;è limite superiore esplicito. I limiti fisici&lt;br /&gt;
del bridge si applicano comunque:&lt;br /&gt;
* Massimo 13 carte per seme (tutte e 4 le mani)&lt;br /&gt;
* Massimo 13 carte per mano&lt;br /&gt;
* Massimo 10 HCP per seme (A+K+Q+J = 4+3+2+1)&lt;br /&gt;
* Massimo 37 HCP per mano (raro ma teoricamente possibile con tutti gli onori)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Esempi completi ==&lt;br /&gt;
&lt;br /&gt;
=== Splinter (tutti gli scenari specifici) ===&lt;br /&gt;
&lt;br /&gt;
DSL nel template wiki:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1H-4D: opener H:5+ hcp:12-21; responder H:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1H-4S: opener H:5+ hcp:12-21; responder H:4+ S:0-1 Shcp:0 hcp:10-15 //&lt;br /&gt;
1S-4C: opener S:5+ hcp:12-21; responder S:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1S-4D: opener S:5+ hcp:12-21; responder S:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1S-4H: opener S:5+ hcp:12-21; responder S:4+ H:0-1 Hhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Splinter (compatto con fit e wildcard) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
dopo 1H: fit:H8+ opener H:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15 //&lt;br /&gt;
dopo 1S: fit:S8+ opener S:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stayman ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit a cuori: fit:H8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder H:4+ hcp:8+ //&lt;br /&gt;
fit a picche: fit:S8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder S:4+ hcp:8+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contro informativo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
base: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; responder hcp:0-8 //&lt;br /&gt;
con intervento: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; opp2 hcp:8+ x:5+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preempt 3-a-livello ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener H:7+ x:0-1 hcp:5-10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overcall con fit avversari ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
overcall semplice: opener hcp:12-21 x:5+; opp1 hcp:10+ x:5+; opp2 fit:8+ //&lt;br /&gt;
con barrage: opener hcp:12-21 x:5+; opp1 hcp:6-10 x:6+; opp2 fit:9+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Note implementative ==&lt;br /&gt;
&lt;br /&gt;
* L&#039;API è read-only, non richiede token CSRF&lt;br /&gt;
* L&#039;accesso anonimo è abilitato di default (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;BridgeShapeAllowAnonymous: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) perché i dati sono pubblici e i tool esterni ne hanno bisogno&lt;br /&gt;
* Il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella risposta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contiene la stringa DSL originale, utile per debug&lt;br /&gt;
* L&#039;azione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; permette di testare stringhe DSL senza creare pagine wiki&lt;br /&gt;
* I calcoli HCP usano la scala standard: A=4, K=3, Q=2, J=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=1991</id>
		<title>Progetto:BridgeShape Motore e frontend</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=1991"/>
		<updated>2026-10-23T05:55:08Z</updated>

		<summary type="html">&lt;p&gt;Lpala: BridgeShape: allineamento docs DSL v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Specifica del motore di smazzate e del frontend (per Play) =&lt;br /&gt;
&lt;br /&gt;
Destinatario: il team/sessione di &#039;&#039;&#039;Play&#039;&#039;&#039; (generatore di smazzate e relativo frontend).&lt;br /&gt;
Obiettivo: realizzare un &#039;&#039;&#039;motore completo&#039;&#039;&#039; che generi mani per &#039;&#039;qualsiasi&#039;&#039; scenario&lt;br /&gt;
descritto nelle pagine di BridgePedia, e un &#039;&#039;&#039;frontend&#039;&#039;&#039; per consultare gli scenari,&lt;br /&gt;
generare, creare e gestire smazzate.&lt;br /&gt;
&lt;br /&gt;
Documenti collegati (leggere in quest&#039;ordine):&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_GENERATOR_API.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; — riferimento della sintassi (DSL v1 + v2) e del JSON dell&#039;API.&lt;br /&gt;
# &#039;&#039;&#039;questo file&#039;&#039;&#039; — semantica normativa, architettura del motore, test di conformità, specifica del frontend, piano di consegna.&lt;br /&gt;
# Wiki: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Progetto:BridgeShape API&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; le pagine di convenzione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (elenco: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Fonte di verità del contratto: l&#039;API &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;action=bridgeshape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di https://bridgepedia.it.&lt;br /&gt;
Se questo documento e l&#039;API divergono vale l&#039;API; segnalatelo a BridgePedia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Contratto, versioni e compatibilità ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Elemento&lt;br /&gt;
! Dove&lt;br /&gt;
! Uso&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| risposta di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| oggi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Cambia solo con modifiche non retrocompatibili&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios[].requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| tag delle capacità richieste dallo scenario (§1.1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| contraddizioni semantiche: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| frammenti del DSL scartati dal parser: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| testo leggibile per scenario, tradotto (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang=it&amp;amp;#124;en&amp;amp;#124;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1/0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Regole di compatibilità:&lt;br /&gt;
&lt;br /&gt;
* I campi nuovi compaiono &#039;&#039;&#039;solo se usati&#039;&#039;&#039;: un motore v1 continua a funzionare sulle pagine v1.&lt;br /&gt;
* Campi sconosciuti: ignorarli &#039;&#039;&#039;non&#039;&#039;&#039; è permesso se compaiono in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Se il motore non supporta un tag di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, deve rifiutare lo scenario con codice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (e nome del tag) e il frontend deve mostrarlo come &amp;quot;non ancora generabile&amp;quot;, non nasconderlo.&lt;br /&gt;
* Il booleano nel JSON è sempre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (MediaWiki rimuove i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;false&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Tutte le chiavi di seme sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure una variabile &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;..&amp;quot;$d&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tag&lt;br /&gt;
! Costrutti&lt;br /&gt;
! Impatto sul motore&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| assegnazione di onori precisi&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~AKQ.&amp;amp;#124;A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| alternative di mano nel seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| seme scelto a runtime, condiviso tra posizioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| filtro/vincolo sulla mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte fisse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces kings queens controls kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| conteggi di onori&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp dp ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| punteggi derivati&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp pairtp defhcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| vincolo sulla coppia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| relazioni tra lunghezze&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma ordinata&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| disgiunzioni e negazioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer vul auction contract declarer lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| metadati e carta d&#039;attacco&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scelta ponderata dello scenario&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono già espanse dal parser (non compaiono mai).&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Endpoint consigliati lato Play ===&lt;br /&gt;
&lt;br /&gt;
Il motore deve esporre (nomi indicativi; l&#039;importante è la semantica):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
POST /api/deals/generate&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;source&amp;quot;: { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot;, &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot; }      // oppure { &amp;quot;dsl&amp;quot;: &amp;quot;...&amp;quot; }&lt;br /&gt;
          | { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot; },                           // scenario scelto per peso&lt;br /&gt;
  &amp;quot;count&amp;quot;: 10,                                                // 1..100&lt;br /&gt;
  &amp;quot;seed&amp;quot;: 12345,                                              // opzionale, riproducibilità&lt;br /&gt;
  &amp;quot;fixed&amp;quot;: { &amp;quot;opener&amp;quot;: &amp;quot;SAK2.H.D.C&amp;quot;, &amp;quot;responder&amp;quot;: &amp;quot;...&amp;quot; },    // carte/mani già fissate (§5.6)&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;it&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
→ 200 { &amp;quot;seed&amp;quot;:..., &amp;quot;deals&amp;quot;:[ {&lt;br /&gt;
        &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot;, &amp;quot;index&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;dealer&amp;quot;: &amp;quot;opener&amp;quot;, &amp;quot;vul&amp;quot;: &amp;quot;none&amp;quot;,&lt;br /&gt;
        &amp;quot;hands&amp;quot;: { &amp;quot;opener&amp;quot;:&amp;quot;AK2.QJ53.K84.T65&amp;quot;, &amp;quot;responder&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp1&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp2&amp;quot;:&amp;quot;...&amp;quot; },&lt;br /&gt;
        &amp;quot;bindings&amp;quot;: { &amp;quot;$a&amp;quot;: &amp;quot;H&amp;quot;, &amp;quot;x:opener&amp;quot;: &amp;quot;D&amp;quot; },          // come sono state risolte variabili e jolly&lt;br /&gt;
        &amp;quot;pbn&amp;quot;: &amp;quot;[Deal \&amp;quot;N:...\&amp;quot;]&amp;quot;, &amp;quot;lin&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
        &amp;quot;explanation&amp;quot;: { &amp;quot;opener&amp;quot;: [&amp;quot;♥: 5+ carte&amp;quot;, ...], ... },   // dalle descriptions&lt;br /&gt;
        &amp;quot;stats&amp;quot;: { &amp;quot;attempts&amp;quot;: 412, &amp;quot;ms&amp;quot;: 38 }&lt;br /&gt;
  } ] }&lt;br /&gt;
→ 422 { &amp;quot;code&amp;quot;: &amp;quot;...&amp;quot;, &amp;quot;reasons&amp;quot;: [ {&amp;quot;code&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;position&amp;quot;:&amp;quot;opp1&amp;quot;, &amp;quot;detail&amp;quot;:&amp;quot;...&amp;quot;} ] }&lt;br /&gt;
GET  /api/deals/capabilities  → { &amp;quot;dslVersion&amp;quot;: 2, &amp;quot;supports&amp;quot;: [&amp;quot;suit_cards&amp;quot;, ...] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Posizioni → sedi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Nord per default; il motore ruota in base a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; solo&lt;br /&gt;
per la numerazione/PBN; i vincoli restano sempre in termini di ruoli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a sinistra dell&#039;apertore, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a destra).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Definizioni normative ==&lt;br /&gt;
&lt;br /&gt;
Il motore e il frontend devono usare &#039;&#039;&#039;esattamente&#039;&#039;&#039; queste definizioni (le descrizioni in&lt;br /&gt;
italiano dell&#039;API le presuppongono).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Carte&#039;&#039;&#039;: A K Q J 10 9 8 7 6 5 4 3 2. Nei vincoli &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 10. &amp;quot;Carte basse&amp;quot; = 8..2.&lt;br /&gt;
* &#039;&#039;&#039;PO / HCP&#039;&#039;&#039;: A=4, K=3, Q=2, J=1. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ecc. = PO nel solo seme.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni e coppie&#039;&#039;&#039;: coppia dichiarante = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; difesa = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Senso di gioco: opener → opp1 → responder → opp2 (orario). Lo stesso per l&#039;attaccante: siede a sinistra del dichiarante (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = opener → attacca opp1; responder → opp2; opp1 → responder; opp2 → opener).&lt;br /&gt;
* &#039;&#039;&#039;Forma ordinata&#039;&#039;&#039;: le 4 lunghezze in ordine decrescente (es. 5431).&lt;br /&gt;
* &#039;&#039;&#039;Classi di forma&#039;&#039;&#039; (possono sovrapporsi; le pagine oggi usano solo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;):&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 4333, 4432, 5332.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 5422, 6322.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;one_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: seme più lungo ≥ 6 e secondo ≤ 3.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;two_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: i due semi più lunghi hanno entrambi ≥ 4 carte e insieme ≥ 9 (5-4, 6-4, 5-5, ...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;three_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: tre semi ≥ 4 (4441, 5440, 4450...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun vincolo. Se la vostra implementazione attuale differisce, allineatela a questa o segnalate la differenza.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;54xx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la forma ordinata deve corrispondere cifra per cifra; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = qualsiasi.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la lunghezza di H è ≥ di ogni altro seme (pari merito ammesso).&lt;br /&gt;
* &#039;&#039;&#039;Confronti&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A op B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: sulle lunghezze dei due semi nella stessa mano; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; uguali.&lt;br /&gt;
* &#039;&#039;&#039;Controlli&#039;&#039;&#039;: A=2, K=1 (le dame non contano). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; somma sulla mano.&lt;br /&gt;
* &#039;&#039;&#039;Carte chiave per l&#039;atout T&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): numero di assi (0-4) + 1 se possiede il Re di T. Valori 0-5. La Dama di atout si esprime con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:TQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Fermata&#039;&#039;&#039; nel seme X (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): possiede almeno una tra: A; Kx (Re con ≥ 2 carte nel seme); Qxx (Dama con ≥ 3); Jxxx (Fante con ≥ 4). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessuna di queste.&lt;br /&gt;
* &#039;&#039;&#039;Punti totali &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + (per ogni seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max(0, lunghezza − 4)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Punti distribuzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + 3 per ogni chicane + 2 per ogni singolo + 1 per ogni doubleton.&lt;br /&gt;
* &#039;&#039;&#039;Perdenti &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (Losing Trick Count): per ogni seme con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;n&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte, considerare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m = min(n,3)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; perdenti del seme = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m − (numero di A, K, Q posseduti nel seme)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; somma sui 4 semi. (Seme vuoto = 0.)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): tra A K Q J 10 9 possiede &#039;&#039;esattamente&#039;&#039; quelle elencate; 8..2 liberi. Stringa vuota = nessuna carta alta. Gli onori elencati sono esclusi dalle altre mani solo per quel che riguarda la proprietà: ogni carta ha un unico proprietario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): una sola alternativa (scelta a caso, uniformemente tra quelle compatibili con gli altri vincoli) descrive tutta la mano in quel seme: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + tra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte basse (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = illimitato, ma ≤ 13 − len(cards)).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (jolly di posizione): un seme scelto a caso tra quelli &#039;&#039;non&#039;&#039; vincolati esplicitamente in quella posizione; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si riferisce allo stesso seme. Il jolly &#039;&#039;&#039;non&#039;&#039;&#039; è condiviso con altre posizioni.&lt;br /&gt;
* &#039;&#039;&#039;Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: a inizio generazione ogni variabile usata riceve un seme dal proprio dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, default tutti e quattro). Variabili diverse hanno &#039;&#039;&#039;semi diversi&#039;&#039;&#039;; una variabile non dichiarata ha dominio completo. Una variabile può coincidere con un seme nominato esplicitamente (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): se non è voluto, restringere il dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SD&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La scelta è uniforme tra le assegnazioni che rendono lo scenario soddisfacibile.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: somma delle lunghezze dei due compagni nel seme (o in qualunque seme del tipo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;major&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/ &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;minor&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, a scelta del motore, uniformemente tra i semi che soddisfano il vincolo).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la mano soddisfa almeno una alternativa. &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: non ne soddisfa nessuna. Più gruppi → AND. Dentro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono gli stessi campi di una posizione (senza &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not/fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp.declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; = PO(opener)+PO(responder); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defense&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = PO(opp1)+PO(opp2). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: somma &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni non nominate&#039;&#039;&#039;: ricevono le carte rimanenti a caso (nessun vincolo); non applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; implicito.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: probabilità relativa di scelta dello scenario quando non è scelto dall&#039;utente (default 1). Non influenza la generazione dentro lo scenario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: metadati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = coppia dichiarante) vanno riportati nell&#039;output (PBN/LIN) e mostrati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è la sequenza da mostrare/verificare (notazione BridgeCards: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;XX&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1NT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: vedi §5.7.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Architettura consigliata del motore ==&lt;br /&gt;
&lt;br /&gt;
Pipeline per ogni mano richiesta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
parse risposta API → controllo requires/errors/warnings&lt;br /&gt;
 → scelta scenario (utente | peso)&lt;br /&gt;
 → ASSEGNAZIONE SIMBOLICA   : variabili $a.., jolly x:, fit, alternative any()/S~, pattern di forma&lt;br /&gt;
 → MATRICE DELLE LUNGHEZZE  : 4 posizioni × 4 semi (somme 13 per riga e per colonna)&lt;br /&gt;
 → ASSEGNAZIONE DELLE CARTE : carte fissate/vincolate, poi resto casuale&lt;br /&gt;
 → RIPARAZIONE PUNTI        : scambi mirati per entrare negli intervalli PO/tp/dp/ltc/controlli&lt;br /&gt;
 → VERIFICA FINALE          : valutazione indipendente di TUTTI i vincoli sulla smazzata completa&lt;br /&gt;
 → output + spiegazione&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punti chiave:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Verifica finale indipendente&#039;&#039;&#039; (il &amp;quot;giudice&amp;quot;): una funzione pura &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies(deal, scenario, bindings)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che valuta ogni vincolo dalle definizioni di §2. Ogni smazzata emessa deve passarla. Questa funzione è anche la base dei test e del pulsante &amp;quot;verifica&amp;quot; del frontend.&lt;br /&gt;
# &#039;&#039;&#039;Costruzione, non solo scarto.&#039;&#039;&#039; Il rejection sampling puro non regge scenari stretti (es. Gran rever nel Multirever, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con coppia 25+ PO). Costruire prima la matrice delle lunghezze con propagazione dei vincoli (backtracking con limiti per riga/colonna), poi assegnare le carte onore per posizione secondo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;..., infine le basse.&lt;br /&gt;
# &#039;&#039;&#039;Riparazione PO&#039;&#039;&#039;: dopo l&#039;assegnazione, se i PO (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, controlli, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sono fuori intervallo, scambiare due carte tra due mani preservando lunghezze e vincoli &#039;&#039;rigidi&#039;&#039; (carte fissate, pattern). Ricerca locale con budget; poi nuovo tentativo dall&#039;inizio.&lt;br /&gt;
# &#039;&#039;&#039;Uniformità&#039;&#039;&#039;: l&#039;obiettivo è una distribuzione quasi uniforme tra le smazzate che soddisfano lo scenario. Le euristiche di costruzione introducono distorsioni: misuratele (§7.3) e non dichiarate &amp;quot;uniformi&amp;quot; se non lo sono.&lt;br /&gt;
# &#039;&#039;&#039;Budget e fallimenti&#039;&#039;&#039;: limite di tempo (oggi 2,5 s CPU/mano), massimo tentativi, e diagnosi. Su fallimento restituire 422 con i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di §6, mai una smazzata che viola i vincoli.&lt;br /&gt;
# &#039;&#039;&#039;Riproducibilità&#039;&#039;&#039;: stesso &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + stessa versione del DSL → stessa smazzata. Salvare nel record &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; della pagina se disponibile.&lt;br /&gt;
# &#039;&#039;&#039;Concorrenza e cache&#039;&#039;&#039;: cache del JSON dell&#039;API per pagina con TTL breve (60 s) e rivalidazione sulla &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; mai servire DSL non validato.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Ordine di risoluzione dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, jolly &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (decidono &#039;&#039;quali&#039;&#039; semi).&lt;br /&gt;
# Alternative: scegliere un ramo per ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (escludendo i rami impossibili con i vincoli già noti); applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come vincoli di esclusione.&lt;br /&gt;
# Lunghezze (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Carte precise (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held/not_held&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Conteggi (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Punteggi derivati (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Verifica finale.&lt;br /&gt;
&lt;br /&gt;
Un vincolo è &amp;quot;rigido&amp;quot; se riguarda carte/lunghezze fissate (1-4); &amp;quot;morbido&amp;quot; se si ripara per scambio (5-6).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Semantica delle combinazioni delicate ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è già espanso in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun trattamento speciale (il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; serve solo alla descrizione). Una difesa quiet &#039;&#039;&#039;riduce&#039;&#039;&#039; il margine PO per la coppia dichiarante: verificare la compatibilità prima di costruire (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: devono essere coerenti; l&#039;API segnala le contraddizioni evidenti.&lt;br /&gt;
* Una carta (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) può comparire in una sola posizione; due posizioni con la stessa carta sono un errore di validazione, non un caso da risolvere a caso.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro una posizione con variabili: le variabili si legano &#039;&#039;&#039;prima&#039;&#039;&#039;, poi si sceglie il ramo.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: escludere dall&#039;insieme di alternative, non solo filtrare a posteriori.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono sulle lunghezze finali (dopo il bind delle variabili).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la carta deve stare nella mano dell&#039;attaccante (§2) e quella mano deve soddisfare i suoi vincoli (es. se ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è coerente, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; no).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Funzionalità del motore (elenco completo da realizzare) ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Core (parità v1) — già in produzione, da conservare ===&lt;br /&gt;
Lunghezze, PO totali/per seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(espanso), 422 con ragioni, tetto 2,5 s.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Nuove funzioni DSL v2 ===&lt;br /&gt;
Tutte le righe di §1.1. Priorità di consegna in §9.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Mani multiple e serie ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;count&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ≤ 100 per richiesta; opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;distinct: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nessuna mano duplicata nella serie);&lt;br /&gt;
opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balance: &amp;quot;round_robin&amp;quot; &amp;amp;#124; &amp;quot;weighted&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per distribuire gli scenari della stessa convenzione.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Spiegazione per mano ===&lt;br /&gt;
Per ogni smazzata: per posizione, elenco dei vincoli con esito (✓) e valore effettivo&lt;br /&gt;
(&amp;quot;♥: 5 carte, richiesto 5+&amp;quot;), e i &#039;&#039;&#039;binding&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x di opener = ♦&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Serve al frontend.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 Verifica di una smazzata data ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con quattro mani e una &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → elenco di vincoli soddisfatti/violati.&lt;br /&gt;
Usa lo stesso giudice del §3. Serve a: smazzate inserite a mano, correzione in aula, test.&lt;br /&gt;
&lt;br /&gt;
=== 5.6 Mani parzialmente fissate (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
Accettare mani complete o parziali (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;opener&amp;quot;: &amp;quot;SAK2.&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o carte singole) e completare il resto&lt;br /&gt;
rispettando lo scenario. Se impossibile → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 5.7 Contesto di gioco della carta ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il motore garantisce che la carta d&#039;attacco sia nella mano giusta e&lt;br /&gt;
fornisce nel risultato &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;play: { &amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;, &amp;quot;declarer&amp;quot;:&amp;quot;responder&amp;quot;, &amp;quot;leader&amp;quot;:&amp;quot;opp2&amp;quot;, &amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot; }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
(Il gioco successivo, oltre la prima carta, non è nel DSL: per Segnali e Attacchi la prima carta e le&lt;br /&gt;
mani bastano a mostrare la situazione.)&lt;br /&gt;
&lt;br /&gt;
=== 5.8 Statistiche ===&lt;br /&gt;
Per scenario: tasso di successo, tentativi medi, p95 ms, codici di fallimento. Esposte in&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api/deals/stats&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e inviate a BridgePedia (§8.5) per tarare i vincoli.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Codici di errore (422 e simili) ==&lt;br /&gt;
&lt;br /&gt;
Già in uso: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;exact_cards_always_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;generation_time_limit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_below_hcp_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Da aggiungere:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Codice&lt;br /&gt;
! Quando&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| lo scenario richiede un tag non supportato (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;detail&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il tag)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl_errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| l&#039;API ha restituito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (riportarli)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;variable_unsatisfiable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna assegnazione dei semi variabili rende lo scenario possibile&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contraddice lo scenario o carte duplicate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp/pairtp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibili con i limiti per posizione&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibile con la mano dell&#039;attaccante&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;no_branch_left&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; eliminano tutti i rami&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma/lunghezze incompatibili con 13 carte per mano e per seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;invalid_request&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| parametri non validi (count, seed...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni 422 porta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons: [{code, position?, detail}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; leggibili dal frontend.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Test di conformità e qualità ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Invarianti (property test, ≥ 10.000 smazzate per scenario del wiki) ===&lt;br /&gt;
* 52 carte distinte; 13 per mano; nessun duplicato.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vero per ogni smazzata emessa (il giudice &#039;&#039;&#039;non&#039;&#039;&#039; deve condividere codice con il generatore).&lt;br /&gt;
* Stesso seed → stesso risultato.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Casi minimi per costrutto (la DSL → cosa deve valere) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! #&lt;br /&gt;
! DSL&lt;br /&gt;
! Asserzione&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener S:5+ hcp:12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ♠ ≥ 5, PO in intervallo&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S opener ${M}:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| due scenari generabili (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M opener $a:5+; responder $a:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| in ogni mano: un nobile ≥5 in opener, lo stesso seme ≥3 in responder; entrambi i nobili compaiono su 1000 mani&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M $b=m opener $a:5+ $b:4+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| $a nobile, $b minore, mai lo stesso seme&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su 1000 mani&lt;br /&gt;
| tutte le mani hanno A, Kx, Qxx o Jxxx a ♠&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener nostop:S S:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna mano con A, né Kx, Qxx o Jxxx a ♠ (con 3 carte: né A, né K, né Q)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener aces:2 kc:H4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2 assi; assi + K♥ = 4&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener has:HQ lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Q♥ presente, K♠ assente&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener tp:20-22&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; corretto con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener ltc:6-7&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| LTC con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;=S longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| confronti rispettati; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con pari merito&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 5 e 4 come due semi più lunghi in ordine; gli altri due sommano 4&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| solo 5422 e 6322&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:5+, H:5+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| almeno un nobile ≥ 5&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener not(S:4+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessun nobile ≥ 4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:4+ hcp:12+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| rami composti&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+ ... opp1 quiet; opp2 quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| coppia ≥ 25, avversari entro i limiti quiet&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:1 ... // weight:3 ...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1000 estrazioni ~ 25%/75% (± tolleranza)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opp1 vul:both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| output con dealer/vul corretti e PBN ruotato&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder lead:SK opp2 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| K♠ in opp2; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con Q♥ in opener&lt;br /&gt;
| opener ha Q♥ e rispetta lo scenario&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| scenario impossibile (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=AK Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
| 422 con ragione&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| scenario con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; simulato&lt;br /&gt;
| 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aggiungere come test di regressione &#039;&#039;&#039;tutti gli scenari reali&#039;&#039;&#039; delle pagine del wiki&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): per ciascuno ≥ 1000 smazzate valide entro il budget, oppure una&lt;br /&gt;
diagnosi documentata. Gli scenari più duri oggi: &#039;&#039;Multirever&#039;&#039; (Gran rever, 20 scenari) e&lt;br /&gt;
&#039;&#039;Segnale di Smith&#039;&#039; (20 scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== 7.3 Qualità statistica ===&lt;br /&gt;
Per ogni scenario del wiki misurare su 5000 mani: distribuzione delle lunghezze e dei PO nei limiti&lt;br /&gt;
consentiti, tasso di riuscita al primo tentativo, tempo p50/p95. Segnalare distorsioni evidenti&lt;br /&gt;
(es. la posizione A prende sempre i PO alti).&lt;br /&gt;
&lt;br /&gt;
=== 7.4 Prestazioni ===&lt;br /&gt;
Obiettivo: p95 &amp;lt; 300 ms per mano sugli scenari comuni; &amp;lt; 2,5 s sul peggiore. Se non si rispetta,&lt;br /&gt;
non allargare i vincoli: segnalare lo scenario a BridgePedia (§8.5) che può rivederlo.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 8. Frontend di Play ==&lt;br /&gt;
&lt;br /&gt;
Il frontend deve permettere di &#039;&#039;&#039;consultare&#039;&#039;&#039;, &#039;&#039;&#039;generare&#039;&#039;&#039;, &#039;&#039;&#039;creare&#039;&#039;&#039; e &#039;&#039;&#039;gestire&#039;&#039;&#039; smazzate.&lt;br /&gt;
Lingua: italiano, con i18n predisposta (en, fr, es, de). Tutti i testi dei vincoli vengono&lt;br /&gt;
dall&#039;API (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, parametro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): non riscriverli.&lt;br /&gt;
&lt;br /&gt;
=== 8.1 Catalogo delle convenzioni ===&lt;br /&gt;
* Elenco da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con vincoli) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutte, con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hasShape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Per ogni voce: titolo, numero di scenari, link alla pagina del wiki, stato: &#039;&#039;generabile&#039;&#039;, &#039;&#039;parzialmente generabile&#039;&#039; (alcuni scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non supportato), &#039;&#039;non generabile&#039;&#039;.&lt;br /&gt;
* Ricerca testuale; filtri per tipologia/sistema se esposti; badge &amp;quot;da verificare&amp;quot; per le traduzioni non verificate.&lt;br /&gt;
* Le 27 convenzioni senza vincoli compaiono come &amp;quot;scenari in arrivo&amp;quot; con link al wiki.&lt;br /&gt;
&lt;br /&gt;
=== 8.2 Visualizzatore di scenario ===&lt;br /&gt;
* Tabella a colonne per posizione (come la tabella del wiki): etichetta scenario, frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[i].positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (rispettare i ruoli personalizzati, es. &amp;quot;Attaccante&amp;quot;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Semi ♥ ♦ in rosso. Mostrare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come chip (tooltip con spiegazione).&lt;br /&gt;
* Pulsante &amp;quot;Mostra DSL&amp;quot; (testo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;quot;Apri la pagina nel wiki&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 8.3 Generatore ===&lt;br /&gt;
* Scelta convenzione → scenario (singolo, &amp;quot;a caso&amp;quot;, &amp;quot;tutti a rotazione&amp;quot;, pesato) → quantità (1-100) → opzioni (seed, mani distinte, nascondi avversari).&lt;br /&gt;
* Risultato: schede smazzata con 4 mani (formato BridgeCards: ♠♥♦♣, bordi, dealer, vulnerabilità), etichetta scenario, &#039;&#039;&#039;pannello &amp;quot;perché questa mano&amp;quot;&#039;&#039;&#039;: per posizione le frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con spunta, binding (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), PO/lunghezze effettive.&lt;br /&gt;
* Azioni per smazzata: rigenera, &amp;quot;blocca questa mano e rigenera le altre&amp;quot; (usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), copia link con seed, esporta PBN/LIN/immagine, aggiungi alla raccolta.&lt;br /&gt;
* Se la licita &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è presente: mostrarla con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bidding&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stile BridgeCards) o nascosta per esercizio (&amp;quot;indovina la risposta&amp;quot;).&lt;br /&gt;
* Gestione 422: messaggio per codice (§6) con suggerimento (&amp;quot;lo scenario è impossibile perché...&amp;quot;). Per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: spiegare quale capacità manca.&lt;br /&gt;
&lt;br /&gt;
=== 8.4 Editor / creazione di scenari ===&lt;br /&gt;
Due modalità sincronizzate:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Modulo guidato&#039;&#039;&#039; per posizione (Apertore, Compagno, Avv. sinistro, Avv. destro):&lt;br /&gt;
#* lunghezze per seme (slider min-max), PO totali e per seme, forma (classi + schema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* griglia carte per seme (A K Q J 10 9 + &amp;quot;basse&amp;quot;) con stati &#039;&#039;deve avere / non deve avere / indifferente&#039;&#039; che produce &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; costruttore di pattern per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con anteprima;&lt;br /&gt;
#* interruttori: fermata (per seme), assi/re/dame/controlli, carte chiave con atout, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp/dp/ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti tra semi, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come gruppi aggiungibili;&lt;br /&gt;
#* variabili di seme &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con dominio (nobili/minori/qualsiasi);&lt;br /&gt;
#* contesto: dealer, vulnerabilità, licita, contratto, attacco, peso;&lt;br /&gt;
#* avversari: pulsante &#039;&#039;&#039;quiet&#039;&#039;&#039; (e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet:max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* macro: &amp;quot;ripeti per ogni nobile / minore / seme&amp;quot; genera &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Editor testuale&#039;&#039;&#039; del DSL con evidenziazione, completamento e &#039;&#039;validazione live&#039;&#039;: chiama &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (debounce 400 ms) e mostra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con il supporto del motore). Le due modalità si convertono a vicenda (modulo → DSL è obbligatorio; DSL → modulo almeno per i costrutti elementari, il resto resta testuale).&lt;br /&gt;
&lt;br /&gt;
* Pulsante &amp;quot;Prova&amp;quot;: genera 5 mani di test dallo scenario in modifica e mostra tempi e tassi di riuscita.&lt;br /&gt;
* Salvataggio come &#039;&#039;&#039;bozza personale&#039;&#039;&#039; in Play (non scrive sul wiki). Pulsante &amp;quot;Copia per BridgePedia&amp;quot; produce la riga &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; da incollare nella pagina (gli editor del wiki fanno il resto).&lt;br /&gt;
* Libreria di &#039;&#039;&#039;modelli&#039;&#039;&#039; presi dalle convenzioni del wiki (&amp;quot;parti da Landy&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== 8.5 Retroazione verso BridgePedia ===&lt;br /&gt;
* Pulsante &amp;quot;Segnala scenario problematico&amp;quot; (lento / troppo raro / 422 / distribuzione strana) che invia: pagina, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, codice errore, statistiche (§5.8) al canale concordato (sessione/issue). Nessuna scrittura diretta sul wiki.&lt;br /&gt;
* Report periodico automatico delle statistiche di generazione per scenario.&lt;br /&gt;
&lt;br /&gt;
=== 8.6 Smazzate manuali ===&lt;br /&gt;
* Compositore: assegnare le 52 carte alle quattro mani con trascinamento o digitazione (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;AK2.QJ5.K84.T65&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), controllo duplicati, completamento casuale delle carte mancanti (opzionalmente rispettando uno scenario: usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Pulsante &amp;quot;Verifica rispetto a uno scenario&amp;quot; (§5.5) con l&#039;elenco dei vincoli soddisfatti e violati.&lt;br /&gt;
* Importa/esporta PBN, LIN, testo semplice.&lt;br /&gt;
&lt;br /&gt;
=== 8.7 Gestione delle smazzate ===&lt;br /&gt;
* Raccolte (&amp;quot;mazzi di esercizio&amp;quot;): nome, descrizione, convenzione, tag; ordinamento; duplicati evitati.&lt;br /&gt;
* Ricerca per convenzione, scenario, tag, data; filtri per vulnerabilità, dealer.&lt;br /&gt;
* Metadati salvati: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, data, autore.&lt;br /&gt;
* Note personali per smazzata; stampa di una raccolta (fogli A4 con 4 o 6 smazzate per pagina, versione &amp;quot;solo mano dell&#039;apertore&amp;quot; per esercizio).&lt;br /&gt;
* Condivisione: link con seed/raccolta, permessi (privato, gruppo, pubblico) secondo il modello utenti di Play. Esportazione in blocco (PBN).&lt;br /&gt;
* Modalità &amp;quot;esercizio di licita&amp;quot;: mostra le mani di un lato, l&#039;utente inserisce la licita, il frontend confronta con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se presente.&lt;br /&gt;
&lt;br /&gt;
=== 8.8 Requisiti trasversali ===&lt;br /&gt;
* Mobile first; tastiera accessibile; semi anche come lettere per daltonici.&lt;br /&gt;
* Nessuna dipendenza dal wiki per il rendering delle carte (usare componenti propri; stile coerente con BridgeCards).&lt;br /&gt;
* Tempi: la generazione deve mostrare avanzamento e poter essere annullata.&lt;br /&gt;
* Tracciare (analytics interni) tempi, errori e scenari più usati.&lt;br /&gt;
* Testo dei vincoli sempre da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; coerente con la lingua dell&#039;interfaccia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 9. Piano di consegna consigliato ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fase&lt;br /&gt;
! Contenuto&lt;br /&gt;
! Esito atteso&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P0 — compatibilità&#039;&#039;&#039; (subito)&lt;br /&gt;
| leggere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; esporre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; rifiutare con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; giudice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per v1&lt;br /&gt;
| nessuna smazzata errata con le pagine nuove&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P1 — core v2&#039;&#039;&#039;&lt;br /&gt;
| macro (nessun lavoro, già espanse), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, classi nuove, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scenari per Landy/Cappelletti/DONT/Smolen con forme e alternative&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P2 — variabili e carte&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; condivise tra posizioni, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has/lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces/kings/queens/controls/kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Michaels, Sputnik, Lebensohl, Blackwood/RKCB, Exclusion&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P3 — punteggi&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| sistemi a forza (Fiori forte, 2♣ forte, Gazzilli)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P4 — frontend lettura&#039;&#039;&#039;&lt;br /&gt;
| catalogo, visualizzatore, generatore con spiegazioni&lt;br /&gt;
| tutti possono provare le convenzioni&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P5 — frontend creazione&#039;&#039;&#039;&lt;br /&gt;
| editor guidato + testuale con validazione live, &amp;quot;Prova&amp;quot;, bozze&lt;br /&gt;
| gli editor creano e collaudano scenari senza il wiki&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P6 — gestione&#039;&#039;&#039;&lt;br /&gt;
| raccolte, smazzate manuali, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, esportazioni, esercizi di licita&lt;br /&gt;
| uso didattico completo&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P7 — qualità&#039;&#039;&#039;&lt;br /&gt;
| suite di conformità (§7), statistiche, report verso BridgePedia&lt;br /&gt;
| motore misurabile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni fase deve chiudersi con i test di §7 per i costrutti introdotti. BridgePedia estende le&lt;br /&gt;
pagine del wiki man mano che i tag diventano disponibili: &#039;&#039;&#039;comunicate a ogni fase la lista dei tag supportati&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) così il wiki passa dalle approssimazioni (pattern &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ai&lt;br /&gt;
costrutti nativi solo quando il motore li regge.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 10. Cosa fa BridgePedia (per non sovrapporsi) ==&lt;br /&gt;
&lt;br /&gt;
* Mantiene il DSL, il parser, le descrizioni e l&#039;API; aggiunge costrutti su richiesta motivata.&lt;br /&gt;
* Scrive e tiene aggiornati gli scenari nelle pagine delle convenzioni; le 27 mancanti saranno coperte via via con i costrutti v2.&lt;br /&gt;
* Fornisce il catalogo di ricette (come descrivere Landy, Blackwood, un attacco sotto onore...).&lt;br /&gt;
* Riceve da Play le segnalazioni di §8.5 e rivede i vincoli troppo duri.&lt;br /&gt;
&lt;br /&gt;
== 11. Decisioni aperte (da concordare con Play) ==&lt;br /&gt;
&lt;br /&gt;
# Definizione definitiva delle classi di forma (§2) rispetto a quanto già implementato.&lt;br /&gt;
# Formato di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (testo semplice vs struttura con esito per vincolo).&lt;br /&gt;
# Modello di persistenza e permessi delle raccolte (utenti Play).&lt;br /&gt;
# Canale per le segnalazioni verso BridgePedia (§8.5).&lt;br /&gt;
# Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; deve accettare anche vincoli aggiuntivi temporanei (override locali dello scenario).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=1990</id>
		<title>Progetto:BridgeShape API</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=1990"/>
		<updated>2026-10-23T05:55:07Z</updated>

		<summary type="html">&lt;p&gt;Lpala: BridgeShape: allineamento docs DSL v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — API per Generatori di Smazzate =&lt;br /&gt;
&lt;br /&gt;
Documentazione tecnica per chi sviluppa un generatore di smazzate di test&lt;br /&gt;
che legge i vincoli di distribuzione (shape constraints) dalle convenzioni&lt;br /&gt;
di BridgePedia.&lt;br /&gt;
&lt;br /&gt;
== Panoramica ==&lt;br /&gt;
&lt;br /&gt;
Ogni pagina wiki di convenzione su BridgePedia può definire nel template&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Convenzione}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; un campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che descrive, in un formato&lt;br /&gt;
DSL compatto, i vincoli di distribuzione delle mani dei 4 giocatori al tavolo.&lt;br /&gt;
&lt;br /&gt;
L&#039;estensione &#039;&#039;&#039;BridgeShape&#039;&#039;&#039; espone un&#039;API REST/JSON per leggere questi&lt;br /&gt;
vincoli in modo strutturato.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== API Endpoint ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GET /api.php?action=bridgeshape&amp;amp;shapeaction=ACTION&amp;amp;format=json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Azioni disponibili ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Azione&lt;br /&gt;
! Descrizione&lt;br /&gt;
! Parametri&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Vincoli per una singola convenzione&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pageid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;title&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco convenzioni con vincoli definiti&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco tutte le convenzioni (con/senza vincoli)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Valida una stringa DSL senza bisogno di una pagina wiki&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi di chiamata ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Per titolo pagina&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;title=Splinter&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Per page ID&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;pageid=42&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Elenco pagine con vincoli&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Validare una stringa DSL&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=validate&amp;amp;dsl=opener+H:5%2B+hcp:12-21&amp;amp;format=json&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato risposta JSON ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;shapeconstraints&amp;quot;: {&lt;br /&gt;
    &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
    &amp;quot;raw&amp;quot;: &amp;quot;1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 // ...&amp;quot;,&lt;br /&gt;
    &amp;quot;scenarios&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;1H-4C&amp;quot;,&lt;br /&gt;
        &amp;quot;positions&amp;quot;: {&lt;br /&gt;
          &amp;quot;opener&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 5, &amp;quot;max&amp;quot;: null }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 12, &amp;quot;max&amp;quot;: 21 }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;responder&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 4, &amp;quot;max&amp;quot;: null },&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 1 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;suit_hcp&amp;quot;: {&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 0 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 10, &amp;quot;max&amp;quot;: 15 }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fit&amp;quot;: []&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Descrizioni leggibili.&#039;&#039;&#039; Insieme a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stesso ordine): per ogni scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;label&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(per posizione, elenco di frasi già tradotte, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;♠: ha K J 10 (e non A Q 9)&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nome del ruolo, es. &amp;quot;Attaccante&amp;quot; se la pagina ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
altrimenti &amp;quot;Apertore (chi usa la convenzione)&amp;quot;, &amp;quot;Compagno&amp;quot;, ...) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Parametro opzionale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (it, en, ...; default lingua dell&#039;API, di solito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;it&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
Serve a mostrare nell&#039;interfaccia di Play &#039;&#039;&#039;perché&#039;&#039;&#039; la mano è fatta così.&lt;br /&gt;
Nella posizione compare anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se è stata usata la macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pages&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Splinter&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 6,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;1H-4C&amp;quot;, &amp;quot;1H-4D&amp;quot;, &amp;quot;1H-4S&amp;quot;, &amp;quot;1S-4C&amp;quot;, &amp;quot;1S-4D&amp;quot;, &amp;quot;1S-4H&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 15,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Stayman&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 2,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;fit a cuori&amp;quot;, &amp;quot;fit a picche&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato DSL ==&lt;br /&gt;
&lt;br /&gt;
Il DSL (Domain Specific Language) è la stringa scritta nel campo&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; del template wiki.&lt;br /&gt;
&lt;br /&gt;
=== Struttura ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
etichetta: vincoli posizione; vincoli posizione // etichetta: vincoli // ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;//&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa gli scenari (il generatore ne sceglie uno random o li presenta all&#039;utente)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa le posizioni dentro uno scenario&lt;br /&gt;
* Ogni scenario ha un&#039;&#039;&#039;&#039;etichetta&#039;&#039;&#039; opzionale seguita da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Ogni posizione inizia col nome del ruolo, seguito da vincoli separati da spazi&lt;br /&gt;
&lt;br /&gt;
=== Posizioni ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Nome&lt;br /&gt;
! Ruolo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Chi apre o fa la prima licita convenzionale&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Il compagno dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a sinistra dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a destra dell&#039;opener (compagno di opp1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vincoli ===&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:5+       — almeno 5 picche&lt;br /&gt;
H:0-1      — 0 o 1 cuori&lt;br /&gt;
D:3        — esattamente 3 quadri&lt;br /&gt;
C:2-5      — da 2 a 5 fiori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Semi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Spades/Picche, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Hearts/Cuori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;D&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Diamonds/Quadri, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Clubs/Fiori&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
x:0-1      — un seme qualsiasi (tra quelli non specificati) con 0-1 carte&lt;br /&gt;
x:6+       — un seme non specificato con almeno 6 carte&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il generatore sceglie casualmente quale seme assegnare a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tra quelli&lt;br /&gt;
non già vincolati esplicitamente (S/H/D/C).&lt;br /&gt;
&lt;br /&gt;
==== HCP totali ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
hcp:15-17  — da 15 a 17 punti onore&lt;br /&gt;
hcp:12+    — almeno 12 punti&lt;br /&gt;
hcp:0-7    — da 0 a 7 punti&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Shcp:3+    — almeno 3 HCP a picche&lt;br /&gt;
Chcp:0     — 0 HCP a fiori (nessun onore)&lt;br /&gt;
Hhcp:0-2   — da 0 a 2 HCP a cuori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
xhcp:0     — 0 HCP nel seme wildcard (x)&lt;br /&gt;
xhcp:0-1   — 0-1 HCP nel seme x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shape class ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
shape:balanced      — distribuzione bilanciata (4333, 4432, 5332)&lt;br /&gt;
shape:one_suiter    — monocolore&lt;br /&gt;
shape:two_suiter    — bicolore&lt;br /&gt;
shape:three_suiter  — tricolore&lt;br /&gt;
shape:any           — qualsiasi (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Onori esatti in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S=KJT      — in picche ha K, J e 10; NON ha A, Q, 9 (le carte basse 8-2 completano)&lt;br /&gt;
S=KT9      — sequenza interna: K, 10, 9; NON ha A, Q, J&lt;br /&gt;
H=Q        — a cuori ha la Q come unico onore tra A K Q J 10&lt;br /&gt;
D=x        — nessun onore a quadri (solo carte basse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le lettere ammesse sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La regola è: &#039;&#039;&#039;le carte elencate sono possedute, le altre tra A K Q J 10 9 NON lo sono&#039;&#039;&#039;; le carte&lt;br /&gt;
dall&#039;8 in giù sono libere e riempiono fino alla lunghezza del seme. Serve a&lt;br /&gt;
descrivere attacchi (sequenza interrotta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, interna &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, sotto onore &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;K&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Q&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e le carte del compagno. Si combina con la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:5 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;quot;S&amp;quot;: &amp;quot;KJT&amp;quot;, &amp;quot;H&amp;quot;: &amp;quot;&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(stringa vuota = nessuna carta alta). Il generatore deve:&lt;br /&gt;
* assegnare esattamente quegli onori alla mano e &#039;&#039;&#039;escluderli&#039;&#039;&#039; dalle altre mani del seme; gli onori non nominati da nessuna posizione sono distribuiti a caso, ma mai a una posizione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per quel seme che non li elenca;&lt;br /&gt;
* rispettare comunque &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (la validazione segnala le contraddizioni, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KQ Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o lo stesso onore a due mani).&lt;br /&gt;
&lt;br /&gt;
==== Pattern di mano in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, stile regex) ====&lt;br /&gt;
&lt;br /&gt;
Descrive &#039;&#039;&#039;l&#039;intera mano in quel seme&#039;&#039;&#039;, dall&#039;alto in basso, come una piccola&lt;br /&gt;
espressione regolare ancorata (inizio e fine):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S~AKQ.          — A, K, Q + una carta bassa (4 carte)&lt;br /&gt;
S~A...          — A + tre carte basse (4 carte)&lt;br /&gt;
S~AJT9.         — A, J, 10, 9 + una bassa&lt;br /&gt;
S~AKQ.|A...     — alternative: una OPPURE l&#039;altra&lt;br /&gt;
S~[KQ]x{2,3}    — K o Q (come unico onore) + 2 o 3 carte basse&lt;br /&gt;
S~KJT.*         — K, J, 10 + qualunque numero di basse (anche zero)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi:&lt;br /&gt;
* &#039;&#039;&#039;Carte alte&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &#039;&#039;&#039;sempre in ordine decrescente&#039;&#039;&#039;, ciascuna posseduta; quelle non nominate tra A K Q J 10 9 NON sono possedute.&lt;br /&gt;
* &#039;&#039;&#039;Classe&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[KQ]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = una carta tra quelle (si espande in alternative).&lt;br /&gt;
* &#039;&#039;&#039;Carta bassa&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) = una carta qualsiasi tra 8 e 2; compare solo in fondo. Quantificatori: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;?&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0-1), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (1 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n,m}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Più punti si sommano (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = tre basse).&lt;br /&gt;
* &#039;&#039;&#039;Alternative&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il generatore ne sceglie una a caso per ogni mano.&lt;br /&gt;
&lt;br /&gt;
È la forma più espressiva di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che resta valida): il pattern fissa anche&lt;br /&gt;
la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 4 carte). Se c&#039;è anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; i due vincoli devono&lt;br /&gt;
essere compatibili (la validazione API segnala le incompatibilità).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, già &#039;&#039;&#039;normalizzato&#039;&#039;&#039; (classi&lt;br /&gt;
espanse, quantificatori risolti), così il generatore non deve interpretare la&lt;br /&gt;
regex:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;suit_patterns&amp;quot;: {&lt;br /&gt;
  &amp;quot;S&amp;quot;: [&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;AKQ&amp;quot;, &amp;quot;low_min&amp;quot;: 1, &amp;quot;low_max&amp;quot;: 1},&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;A&amp;quot;,   &amp;quot;low_min&amp;quot;: 3, &amp;quot;low_max&amp;quot;: 3}&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = carte alte possedute (ordine A K Q J T 9); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; =&lt;br /&gt;
numero di carte basse (2-8), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessun limite. La lunghezza del&lt;br /&gt;
seme è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;len(cards) + numero di basse&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Il generatore sceglie una alternativa e&lt;br /&gt;
rispetta anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Gli onori di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vanno esclusi dalle altre&lt;br /&gt;
mani; quelli non nominati nella mano vanno ad altri a caso.&lt;br /&gt;
&lt;br /&gt;
==== Avversari &amp;quot;quiet&amp;quot; (nessun intervento) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opp1 quiet           — solo per opp1/opp2&lt;br /&gt;
opp2 quiet:0-7       — come quiet, ma con HCP personalizzati&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è una &#039;&#039;&#039;macro espansa dall&#039;API&#039;&#039;&#039;: nel JSON non compare mai la parola&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ma i vincoli già risolti. Chi legge l&#039;API (il generatore) non deve&lt;br /&gt;
implementare nulla di nuovo. Si espande in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:0-4 H:0-4 D:0-5 C:0-5 hcp:0-9 Shcp:0-3 Hhcp:0-3 Dhcp:0-4 Chcp:0-4&lt;br /&gt;
(con quiet:0-7 → hcp:0-7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significato: gli avversari possono avere colori lunghi (così le mani sono&lt;br /&gt;
varie), ma poveri di onori e con pochi punti: nessun colore da 6+ carte&lt;br /&gt;
(niente apertura di sbarramento), nessun contro informativo, nessun intervento&lt;br /&gt;
naturale credibile. Le distribuzioni ammesse sono quindi molte, ma con punti&lt;br /&gt;
ridotti: il generatore ha meno margine sugli HCP della coppia dichiarante&lt;br /&gt;
(40 punti totali: apertore+rispondente restano sopra ~22).&lt;br /&gt;
I token espliciti scritti sulla stessa posizione &#039;&#039;&#039;sostituiscono&#039;&#039;&#039; i default,&lt;br /&gt;
in qualsiasi ordine: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1 quiet S:0-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; lascia le picche 0-4 e tiene il resto.&lt;br /&gt;
Su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; la macro viene ignorata.&lt;br /&gt;
&lt;br /&gt;
==== Fit (vincolo cross-posizione) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit:H8+    — almeno 8 cuori totali tra i compagni&lt;br /&gt;
fit:S9+    — almeno 9 picche totali tra i compagni&lt;br /&gt;
fit:M8+    — almeno 8 carte in un seme maggiore (H o S)&lt;br /&gt;
fit:m8+    — almeno 8 carte in un seme minore (D o C)&lt;br /&gt;
fit:8+     — almeno 8 carte in un seme qualsiasi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fit si applica tra &#039;&#039;&#039;compagni&#039;&#039;&#039;:&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o a livello di scenario → coppia dichiarante&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → coppia difensiva&lt;br /&gt;
&lt;br /&gt;
=== Formato range ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sintassi&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Almeno 5 (min=5, max=null)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0-1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 0 a 1 (min=0, max=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Esattamente 3 (min=3, max=3)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 12 a 21 (min=12, max=21)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nella risposta JSON, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; significa &amp;quot;nessun limite superiore&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Semi non menzionati ===&lt;br /&gt;
&lt;br /&gt;
I semi &#039;&#039;&#039;non vincolati&#039;&#039;&#039; e non coperti da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono distribuiti &#039;&#039;&#039;casualmente&#039;&#039;&#039;&lt;br /&gt;
dal generatore, rispettando il vincolo che il totale delle carte per mano sia 13.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== DSL versione 2 (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion: 2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
Tutto ciò che sopra resta valido e &#039;&#039;&#039;invariato&#039;&#039;&#039;: i campi v1 hanno lo stesso significato di prima.&lt;br /&gt;
La v2 aggiunge sintassi nuova; &#039;&#039;&#039;ogni scenario ha nel JSON il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (elenco di tag,&lt;br /&gt;
vuoto se usa solo la v1; vedi sotto) così un motore parziale può rifiutare uno scenario con un&lt;br /&gt;
errore esplicito invece di generare mani sbagliate. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[].context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è sempre presente&lt;br /&gt;
(array, eventualmente vuoto).&lt;br /&gt;
Le definizioni normative (cosa è una fermata, i punti totali, le perdenti...) e&lt;br /&gt;
l&#039;architettura del motore sono in &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_ENGINE_SPEC.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Macro di scrittura (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@NOME=v1,v2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) — risolte dal parser, il motore non le vede ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S  1${M}: opener ${M}:5+ hcp:12-21; responder ${M}:3+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Genera due scenari (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sostituendo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;${M}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ovunque, etichetta compresa.&lt;br /&gt;
Più prefissi fanno il prodotto cartesiano (max 64 scenari): &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S @N=15-17,12-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
I valori possono essere intervalli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp:${N}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): servono anche come parametri del&lt;br /&gt;
sistema (SA 15-17 contro 14-16).&lt;br /&gt;
&lt;br /&gt;
=== Semi variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b $c $d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Un seme &amp;quot;da scegliere&amp;quot; condiviso da più posizioni dello stesso scenario. Ogni&lt;br /&gt;
variabile è un seme diverso dalle altre. Dominio dichiarato a livello di scenario&lt;br /&gt;
(prima delle posizioni):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Landy: $a=M $b=any  opener hcp:12-21 ; opp1 $a:5+ $b:4+ ; responder $a:0-2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nobili, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=m&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; minori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (default) qualunque, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SH&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; insieme esplicito.&lt;br /&gt;
Una variabile non dichiarata vale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutti i semi). Si usano al posto di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lunghezza), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$ahcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=KQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:$aQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;gt;$b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Differisce da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che vale per una sola posizione).&lt;br /&gt;
JSON: lo stesso dizionario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ... ma con chiave &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
a livello di scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;vars&amp;quot;: {&amp;quot;$a&amp;quot;: [&amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;]}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Controlli, carte chiave, carte precise ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Token&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings:1-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens:0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| numero di assi / re / dame nella mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| controlli (A=2, K=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H2-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte chiave con atout H: i 4 assi + il Re di H (0-5)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:S10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| possiede quella carta precisa&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NON possiede quella carta&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ha / non ha una fermata nel seme (definizione in SPEC)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards: {&amp;quot;H&amp;quot;: Range}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held: [&amp;quot;HQ&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_not_held: [&amp;quot;SK&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers: {&amp;quot;S&amp;quot;: 1, &amp;quot;H&amp;quot;: 0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(1 = deve averla, 0 = non deve averla).&lt;br /&gt;
&lt;br /&gt;
=== Punti e perdenti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti totali (PO + 1 per ogni carta oltre la quarta in ogni seme),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti distribuzione (PO + 3 chicane + 2 singolo + 1 doubleton),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; perdenti (Losing Trick Count). A livello di scenario: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(PO della coppia dichiarante), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defhcp:0-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (coppia avversaria), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairtp:26+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range) nella posizione; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp: {&amp;quot;declarer&amp;quot;: R, &amp;quot;defense&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp: {&amp;quot;declarer&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nello scenario.&lt;br /&gt;
&lt;br /&gt;
=== Confronti tra semi e forme precise ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
H&amp;gt;S   H&amp;gt;=S   H&amp;lt;S   H&amp;lt;=S   H==S   $a&amp;gt;$b      — confronto di lunghezze nella stessa mano&lt;br /&gt;
longest:H                                      — H è tra i semi più lunghi (pari merito ammesso)&lt;br /&gt;
shape:5-4-x-x   shape:5422   shape:54xx        — lunghezze ordinate in modo decrescente, x = qualsiasi&lt;br /&gt;
shape:semi_balanced                            — 5422 e 6322 (si aggiunge alle classi esistenti)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare: [{&amp;quot;left&amp;quot;:&amp;quot;H&amp;quot;,&amp;quot;op&amp;quot;:&amp;quot;&amp;gt;=&amp;quot;,&amp;quot;right&amp;quot;:&amp;quot;S&amp;quot;}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest: [&amp;quot;H&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern: &amp;quot;54xx&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Alternative e negazioni nella stessa mano: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener any(S:4+ hcp:12+, H:4+)   not(D:6+)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano soddisfa &#039;&#039;&#039;almeno una&#039;&#039;&#039; delle alternative (separate da virgola;&lt;br /&gt;
ogni alternativa è una congiunzione di token). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano non soddisfa&lt;br /&gt;
&#039;&#039;&#039;nessuna&#039;&#039;&#039; delle alternative. Si possono scrivere più gruppi (si combinano in AND);&lt;br /&gt;
niente annidamenti.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any: [[altA, altB], ...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lista di gruppi; ogni alternativa è un oggetto&lt;br /&gt;
con gli stessi campi di una posizione), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not: [altA, altB]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Contesto dello scenario ===&lt;br /&gt;
&lt;br /&gt;
Token prima delle posizioni: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (frequenza relativa, 1-100, default 1),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul:none&amp;amp;#124;us&amp;amp;#124;them&amp;amp;#124;both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = apertore+rispondente),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction:1SA,P,2C,P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (licite, notazione BridgeCards; SA = NT), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract:4H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (int) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context: {&amp;quot;dealer&amp;quot;:..,&amp;quot;vul&amp;quot;:..,&amp;quot;auction&amp;quot;:[..],&amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;,&amp;quot;declarer&amp;quot;:..,&amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Il motore deve usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando li espone (per la numerazione del tavolo) e,&lt;br /&gt;
se c&#039;è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, la carta deve stare nella mano dell&#039;attaccante (a sinistra del&lt;br /&gt;
dichiarante) e rispettare i vincoli di quella mano.&lt;br /&gt;
&lt;br /&gt;
=== Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (has/lacks),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (aces/kings/queens/controls/kc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tp/dp/ltc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (confronti, longest), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non compaiono: sono già espanse.&lt;br /&gt;
&lt;br /&gt;
=== Avvisi di parsing (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando un frammento del DSL non è stato&lt;br /&gt;
capito e quindi &#039;&#039;&#039;scartato&#039;&#039;&#039;: nome di posizione sbagliato, token sconosciuto o con valore&lt;br /&gt;
non valido (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:5&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=Kx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:4-5-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), token di scenario dopo le posizioni, posizione&lt;br /&gt;
definita due volte, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su opener/responder, gruppo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con alternative non&lt;br /&gt;
valide (in tal caso &#039;&#039;&#039;l&#039;intero gruppo è ignorato&#039;&#039;&#039;, mai applicato a metà). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate.valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è 1&lt;br /&gt;
solo se non ci sono né &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; né &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Un motore non deve generare se ci sono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Limiti (oltre i quali il parser avvisa e tronca): 60.000 caratteri di input, 200 scenari, 6&lt;br /&gt;
prefissi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, 64 valori per macro, 64 scenari per espansione, 8 gruppi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e 16 alternative&lt;br /&gt;
per posizione. Le etichette non possono contenere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Struttura JSON di uno scenario ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typescript&amp;quot;&amp;gt;&lt;br /&gt;
interface Scenario {&lt;br /&gt;
  label: string;           // Etichetta (es. &amp;quot;1H-4C&amp;quot;), vuota se non specificata&lt;br /&gt;
  positions: {&lt;br /&gt;
    [posName: string]: Position;  // &amp;quot;opener&amp;quot;, &amp;quot;responder&amp;quot;, &amp;quot;opp1&amp;quot;, &amp;quot;opp2&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  fit: FitConstraint[];    // Vincoli di fit (array, può essere vuoto)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Position {&lt;br /&gt;
  suit_patterns?: {         // Pattern regex-like normalizzati: {&amp;quot;S&amp;quot;:[{&amp;quot;cards&amp;quot;:&amp;quot;AKQ&amp;quot;,&amp;quot;low_min&amp;quot;:1,&amp;quot;low_max&amp;quot;:1}]}&lt;br /&gt;
    [suit: string]: { cards: string; low_min: number; low_max: number | null }[];&lt;br /&gt;
  };&lt;br /&gt;
  suit_cards?: { [suit: string]: string };  // Onori esatti, es. {&amp;quot;S&amp;quot;:&amp;quot;KJT&amp;quot;}; &amp;quot;&amp;quot; = nessuna carta alta&lt;br /&gt;
  suits?: {                // Vincoli lunghezza seme (solo semi esplicitati)&lt;br /&gt;
    [suit: string]: Range; // &amp;quot;S&amp;quot;, &amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;C&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  hcp?: Range;             // HCP totali&lt;br /&gt;
  suit_hcp?: {             // HCP per seme specifico&lt;br /&gt;
    [suit: string]: Range;&lt;br /&gt;
  };&lt;br /&gt;
  x?: Range;               // Lunghezza seme wildcard&lt;br /&gt;
  x_hcp?: Range;           // HCP seme wildcard&lt;br /&gt;
  shape?: string;          // Shape class: &amp;quot;balanced&amp;quot;, &amp;quot;one_suiter&amp;quot;, etc.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Range {&lt;br /&gt;
  min: number;&lt;br /&gt;
  max: number | null;      // null = nessun limite superiore&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface FitConstraint {&lt;br /&gt;
  suit: string | null;      // &amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;,&amp;quot;D&amp;quot;,&amp;quot;C&amp;quot; o null&lt;br /&gt;
  suit_class: string | null; // &amp;quot;major&amp;quot;, &amp;quot;minor&amp;quot; o null&lt;br /&gt;
  min: number;              // Numero minimo di carte (es. 8)&lt;br /&gt;
  pair: string;             // &amp;quot;declarer&amp;quot; o &amp;quot;defense&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logica per il generatore ==&lt;br /&gt;
&lt;br /&gt;
=== Algoritmo base ===&lt;br /&gt;
&lt;br /&gt;
Per ogni scenario:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Scegli lo scenario&#039;&#039;&#039;: random tra quelli disponibili, oppure lascia scegliere all&#039;utente&lt;br /&gt;
# &#039;&#039;&#039;Risolvi wildcard&#039;&#039;&#039;:&lt;br /&gt;
#* Se una posizione ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scegli un seme casuale tra quelli non esplicitamente vincolati&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si applica allo stesso seme scelto per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Risolvi fit&#039;&#039;&#039;:&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è specificato, entrambi i compagni devono avere un totale &amp;gt;= &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in quel seme&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit_class&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;quot;major&amp;quot;, scegli tra H e S; se &amp;quot;minor&amp;quot;, tra D e C&lt;br /&gt;
#* Se entrambi sono null, scegli un seme qualsiasi&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.pair&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; indica quale coppia: &amp;quot;declarer&amp;quot; (opener+responder) o &amp;quot;defense&amp;quot; (opp1+opp2)&lt;br /&gt;
# &#039;&#039;&#039;Genera le mani&#039;&#039;&#039;:&lt;br /&gt;
#* Per ogni posizione, genera una mano che rispetti tutti i vincoli&lt;br /&gt;
#* I semi senza vincoli vengono riempiti casualmente&lt;br /&gt;
#* Il totale delle carte per mano deve essere esattamente 13&lt;br /&gt;
#* Il totale delle carte per seme (tutte e 4 le mani) deve essere esattamente 13&lt;br /&gt;
# &#039;&#039;&#039;Posizioni non menzionate&#039;&#039;&#039;: se uno scenario non menziona &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, distribuisci le carte rimanenti casualmente tra gli avversari&lt;br /&gt;
&lt;br /&gt;
=== Priorità dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Vincoli di fit (cross-posizione) — determinano la distribuzione di base&lt;br /&gt;
# Vincoli di seme specifico (S:, H:, D:, C:) — limitano i singoli semi&lt;br /&gt;
# Vincoli wildcard (x:) — dopo aver fissato i semi specifici&lt;br /&gt;
# Vincoli HCP (hcp:, Shcp:, xhcp:) — filtro finale&lt;br /&gt;
# Shape class (shape:) — validazione della forma complessiva&lt;br /&gt;
&lt;br /&gt;
=== Gestione di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Quando &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, non c&#039;è limite superiore esplicito. I limiti fisici&lt;br /&gt;
del bridge si applicano comunque:&lt;br /&gt;
* Massimo 13 carte per seme (tutte e 4 le mani)&lt;br /&gt;
* Massimo 13 carte per mano&lt;br /&gt;
* Massimo 10 HCP per seme (A+K+Q+J = 4+3+2+1)&lt;br /&gt;
* Massimo 37 HCP per mano (raro ma teoricamente possibile con tutti gli onori)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Esempi completi ==&lt;br /&gt;
&lt;br /&gt;
=== Splinter (tutti gli scenari specifici) ===&lt;br /&gt;
&lt;br /&gt;
DSL nel template wiki:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1H-4D: opener H:5+ hcp:12-21; responder H:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1H-4S: opener H:5+ hcp:12-21; responder H:4+ S:0-1 Shcp:0 hcp:10-15 //&lt;br /&gt;
1S-4C: opener S:5+ hcp:12-21; responder S:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1S-4D: opener S:5+ hcp:12-21; responder S:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1S-4H: opener S:5+ hcp:12-21; responder S:4+ H:0-1 Hhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Splinter (compatto con fit e wildcard) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
dopo 1H: fit:H8+ opener H:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15 //&lt;br /&gt;
dopo 1S: fit:S8+ opener S:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stayman ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit a cuori: fit:H8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder H:4+ hcp:8+ //&lt;br /&gt;
fit a picche: fit:S8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder S:4+ hcp:8+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contro informativo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
base: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; responder hcp:0-8 //&lt;br /&gt;
con intervento: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; opp2 hcp:8+ x:5+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preempt 3-a-livello ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener H:7+ x:0-1 hcp:5-10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overcall con fit avversari ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
overcall semplice: opener hcp:12-21 x:5+; opp1 hcp:10+ x:5+; opp2 fit:8+ //&lt;br /&gt;
con barrage: opener hcp:12-21 x:5+; opp1 hcp:6-10 x:6+; opp2 fit:9+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Note implementative ==&lt;br /&gt;
&lt;br /&gt;
* L&#039;API è read-only, non richiede token CSRF&lt;br /&gt;
* L&#039;accesso anonimo è abilitato di default (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;BridgeShapeAllowAnonymous: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) perché i dati sono pubblici e i tool esterni ne hanno bisogno&lt;br /&gt;
* Il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella risposta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contiene la stringa DSL originale, utile per debug&lt;br /&gt;
* L&#039;azione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; permette di testare stringhe DSL senza creare pagine wiki&lt;br /&gt;
* I calcoli HCP usano la scala standard: A=4, K=3, Q=2, J=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Ricette_DSL&amp;diff=1989</id>
		<title>Progetto:BridgeShape Ricette DSL</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Ricette_DSL&amp;diff=1989"/>
		<updated>2026-10-23T05:49:08Z</updated>

		<summary type="html">&lt;p&gt;Lpala: BridgeShape: documentazione DSL v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Motore e frontend|Motore e frontend]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Ricette DSL v2 per gli editor =&lt;br /&gt;
&lt;br /&gt;
Come descrivere con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; le situazioni tipiche. Ogni ricetta è verificata dal&lt;br /&gt;
parser (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tests/phpunit/unit/RecipesTest.php&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). I punti sono esempi di partenza: &#039;&#039;&#039;le soglie vanno prese dalla fonte citata nella pagina&#039;&#039;&#039;, non da qui.&lt;br /&gt;
&lt;br /&gt;
Regole: scenari separati da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;//&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; posizioni da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro i template si scrive &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{!}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Per ogni pagina con scenari aggiungere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se i nomi &amp;quot;Apertore/Compagno&amp;quot; non calzano.&lt;br /&gt;
&lt;br /&gt;
== Apertura e risposta con fit variabile (macro) ==&lt;br /&gt;
&lt;br /&gt;
Un solo testo per entrambi i nobili:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S 1${M}-fit: opener ${M}:5+ hcp:12-21; responder ${M}:3+ hcp:6+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Splinter con seme singolo variabile ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S 1${M}: $a=SHDC opener ${M}:5+ hcp:12-21; responder ${M}:4+ $a:0-1 $ahcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; deve essere diverso da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;${M}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, restringere: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SDC&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
== Intervento bicolore su apertura (Landy, Michaels, Cappelletti) ==&lt;br /&gt;
&lt;br /&gt;
Un nobile + un minore, seme dell&#039;apertore escluso con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Michaels nobile+minore: $a=M $b=m opener hcp:12-21 ; opp1 $a:5+ $b:5+ hcp:8-16 ; responder hcp:0-9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Landy (5-4 nei nobili):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Landy 5-4 picche: opener shape:balanced hcp:15-17; opp1 S:5 H:4 hcp:8+&lt;br /&gt;
Landy 4-5 cuori: opener shape:balanced hcp:15-17; opp1 S:4 H:5 hcp:8+&lt;br /&gt;
Landy 5-5: opener shape:balanced hcp:15-17; opp1 S:5+ H:5+ hcp:8+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Avversari che non possono intervenire ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Avversari quiet: opener hcp:12-21; responder hcp:6+; opp1 quiet; opp2 quiet&lt;br /&gt;
Avversari quiet stretti: opener hcp:12-21; responder hcp:6+; opp1 quiet:0-7; opp2 quiet:0-7&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fermate (Lebensohl, Michaels, SA dopo intervento) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Lebensohl con fermata: opener shape:balanced hcp:15-17; opp1 S:5+ hcp:8-15; responder stop:S hcp:10+ H:0-3&lt;br /&gt;
Lebensohl senza fermata: opener shape:balanced hcp:15-17; opp1 S:5+ hcp:8-15; responder nostop:S hcp:10+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blackwood / RKCB / richiesta della Dama ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S RKCB-${M}-1o4: opener ${M}:5+ hcp:16+; responder ${M}:3+ kc:${M}1 has:${M}Q&lt;br /&gt;
@M=H,S RKCB-${M}-2senzaDama: opener ${M}:5+ hcp:16+; responder ${M}:3+ kc:${M}2 lacks:${M}Q&lt;br /&gt;
@M=H,S RKCB-${M}-3: opener ${M}:5+ hcp:16+; responder ${M}:3+ kc:${M}3&lt;br /&gt;
Blackwood-2-assi: opener hcp:18+; responder aces:2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = un asso oppure il Re di cuori; l&#039;atout viene dalla macro.)&lt;br /&gt;
&lt;br /&gt;
== Forze con punteggi alternativi ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Apertura forte per punti totali: opener tp:23+ ; responder hcp:0-7&lt;br /&gt;
Aperture a perdenti: opener ltc:5-6 hcp:17+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternative di mano senza duplicare gli scenari ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Smolen: opener shape:balanced hcp:15-17 any(S:3+ H:2-3, H:3+ S:2-3); responder any(S:5 H:4, S:4 H:5) hcp:10+&lt;br /&gt;
Mano con almeno un nobile lungo: opener any(S:5+, H:5+) hcp:12-21&lt;br /&gt;
Nessun nobile 4+: opener not(S:4+, H:4+) shape:balanced&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Confronti e forme ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Colore più lungo a cuori: opener H&amp;gt;S longest:H hcp:12-21&lt;br /&gt;
Bicolore 5-4 qualsiasi: opener shape:5-4-x-x hcp:12-21&lt;br /&gt;
Semibilanciata: opener shape:semi_balanced&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Barrage / preempt per vulnerabilità e frequenza ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Preempt in zona sfavorevole: vul:us dealer:opener weight:2 opener H:7 hcp:5-10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Segnali e attacchi (contesto di gioco) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Segnale di Smith: declarer:opener contract:4H lead:SK opener H:5+; opp1 S=KQT&lt;br /&gt;
Attacco sotto onore: declarer:opener contract:3NT lead:S4 opener hcp:15-17; opp1 S~K.{2,3}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
(L&#039;attacco deve stare nella mano a sinistra del dichiarante: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
== Coppia e forza totale ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Slam: pairhcp:33+ opener hcp:17+ ; responder hcp:14+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cose da NON fare ==&lt;br /&gt;
* Non ripetere uno scenario per ogni nobile: usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Non usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per esprimere &amp;quot;ha almeno 4 carte&amp;quot;: usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:4+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Non usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (viene ignorato).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{!}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e non &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro i parametri dei template.&lt;br /&gt;
* Controllare sempre con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: se compaiono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; lo scenario va corretto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=1988</id>
		<title>Progetto:BridgeShape Motore e frontend</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_Motore_e_frontend&amp;diff=1988"/>
		<updated>2026-10-23T05:49:07Z</updated>

		<summary type="html">&lt;p&gt;Lpala: BridgeShape: documentazione DSL v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape API|API e sintassi DSL]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — Specifica del motore di smazzate e del frontend (per Play) =&lt;br /&gt;
&lt;br /&gt;
Destinatario: il team/sessione di &#039;&#039;&#039;Play&#039;&#039;&#039; (generatore di smazzate e relativo frontend).&lt;br /&gt;
Obiettivo: realizzare un &#039;&#039;&#039;motore completo&#039;&#039;&#039; che generi mani per &#039;&#039;qualsiasi&#039;&#039; scenario&lt;br /&gt;
descritto nelle pagine di BridgePedia, e un &#039;&#039;&#039;frontend&#039;&#039;&#039; per consultare gli scenari,&lt;br /&gt;
generare, creare e gestire smazzate.&lt;br /&gt;
&lt;br /&gt;
Documenti collegati (leggere in quest&#039;ordine):&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_GENERATOR_API.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; — riferimento della sintassi (DSL v1 + v2) e del JSON dell&#039;API.&lt;br /&gt;
# &#039;&#039;&#039;questo file&#039;&#039;&#039; — semantica normativa, architettura del motore, test di conformità, specifica del frontend, piano di consegna.&lt;br /&gt;
# Wiki: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Progetto:BridgeShape API&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; le pagine di convenzione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (elenco: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Fonte di verità del contratto: l&#039;API &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;action=bridgeshape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di https://bridgepedia.it.&lt;br /&gt;
Se questo documento e l&#039;API divergono vale l&#039;API; segnalatelo a BridgePedia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. Contratto, versioni e compatibilità ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Elemento&lt;br /&gt;
! Dove&lt;br /&gt;
! Uso&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| risposta di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| oggi &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Cambia solo con modifiche non retrocompatibili&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios[].requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| tag delle capacità richieste dallo scenario (§1.1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| contraddizioni semantiche: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| frammenti del DSL scartati dal parser: &#039;&#039;&#039;non generare&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| testo leggibile per scenario, tradotto (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang=it&amp;amp;#124;en&amp;amp;#124;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;valid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1/0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Regole di compatibilità:&lt;br /&gt;
&lt;br /&gt;
* I campi nuovi compaiono &#039;&#039;&#039;solo se usati&#039;&#039;&#039;: un motore v1 continua a funzionare sulle pagine v1.&lt;br /&gt;
* Campi sconosciuti: ignorarli &#039;&#039;&#039;non&#039;&#039;&#039; è permesso se compaiono in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Se il motore non supporta un tag di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, deve rifiutare lo scenario con codice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (e nome del tag) e il frontend deve mostrarlo come &amp;quot;non ancora generabile&amp;quot;, non nasconderlo.&lt;br /&gt;
* Il booleano nel JSON è sempre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (MediaWiki rimuove i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;false&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Tutte le chiavi di seme sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure una variabile &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;..&amp;quot;$d&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Tag&lt;br /&gt;
! Costrutti&lt;br /&gt;
! Impatto sul motore&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| assegnazione di onori precisi&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~AKQ.&amp;amp;#124;A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| alternative di mano nel seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| seme scelto a runtime, condiviso tra posizioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| filtro/vincolo sulla mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte fisse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces kings queens controls kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| conteggi di onori&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp dp ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| punteggi derivati&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp pairtp defhcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| vincolo sulla coppia&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| relazioni tra lunghezze&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma ordinata&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| disgiunzioni e negazioni&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer vul auction contract declarer lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| metadati e carta d&#039;attacco&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scelta ponderata dello scenario&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono già espanse dal parser (non compaiono mai).&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Endpoint consigliati lato Play ===&lt;br /&gt;
&lt;br /&gt;
Il motore deve esporre (nomi indicativi; l&#039;importante è la semantica):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
POST /api/deals/generate&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;source&amp;quot;: { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot;, &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot; }      // oppure { &amp;quot;dsl&amp;quot;: &amp;quot;...&amp;quot; }&lt;br /&gt;
          | { &amp;quot;page&amp;quot;: &amp;quot;Splinter&amp;quot; },                           // scenario scelto per peso&lt;br /&gt;
  &amp;quot;count&amp;quot;: 10,                                                // 1..100&lt;br /&gt;
  &amp;quot;seed&amp;quot;: 12345,                                              // opzionale, riproducibilità&lt;br /&gt;
  &amp;quot;fixed&amp;quot;: { &amp;quot;opener&amp;quot;: &amp;quot;SAK2.H.D.C&amp;quot;, &amp;quot;responder&amp;quot;: &amp;quot;...&amp;quot; },    // carte/mani già fissate (§5.6)&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;it&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
→ 200 { &amp;quot;seed&amp;quot;:..., &amp;quot;deals&amp;quot;:[ {&lt;br /&gt;
        &amp;quot;scenario&amp;quot;: &amp;quot;1H-4C&amp;quot;, &amp;quot;index&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;dealer&amp;quot;: &amp;quot;opener&amp;quot;, &amp;quot;vul&amp;quot;: &amp;quot;none&amp;quot;,&lt;br /&gt;
        &amp;quot;hands&amp;quot;: { &amp;quot;opener&amp;quot;:&amp;quot;AK2.QJ53.K84.T65&amp;quot;, &amp;quot;responder&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp1&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;opp2&amp;quot;:&amp;quot;...&amp;quot; },&lt;br /&gt;
        &amp;quot;bindings&amp;quot;: { &amp;quot;$a&amp;quot;: &amp;quot;H&amp;quot;, &amp;quot;x:opener&amp;quot;: &amp;quot;D&amp;quot; },          // come sono state risolte variabili e jolly&lt;br /&gt;
        &amp;quot;pbn&amp;quot;: &amp;quot;[Deal \&amp;quot;N:...\&amp;quot;]&amp;quot;, &amp;quot;lin&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
        &amp;quot;explanation&amp;quot;: { &amp;quot;opener&amp;quot;: [&amp;quot;♥: 5+ carte&amp;quot;, ...], ... },   // dalle descriptions&lt;br /&gt;
        &amp;quot;stats&amp;quot;: { &amp;quot;attempts&amp;quot;: 412, &amp;quot;ms&amp;quot;: 38 }&lt;br /&gt;
  } ] }&lt;br /&gt;
→ 422 { &amp;quot;code&amp;quot;: &amp;quot;...&amp;quot;, &amp;quot;reasons&amp;quot;: [ {&amp;quot;code&amp;quot;:&amp;quot;...&amp;quot;, &amp;quot;position&amp;quot;:&amp;quot;opp1&amp;quot;, &amp;quot;detail&amp;quot;:&amp;quot;...&amp;quot;} ] }&lt;br /&gt;
GET  /api/deals/capabilities  → { &amp;quot;dslVersion&amp;quot;: 2, &amp;quot;supports&amp;quot;: [&amp;quot;suit_cards&amp;quot;, ...] }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Posizioni → sedi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Nord per default; il motore ruota in base a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; solo&lt;br /&gt;
per la numerazione/PBN; i vincoli restano sempre in termini di ruoli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a sinistra dell&#039;apertore, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = a destra).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Definizioni normative ==&lt;br /&gt;
&lt;br /&gt;
Il motore e il frontend devono usare &#039;&#039;&#039;esattamente&#039;&#039;&#039; queste definizioni (le descrizioni in&lt;br /&gt;
italiano dell&#039;API le presuppongono).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Carte&#039;&#039;&#039;: A K Q J 10 9 8 7 6 5 4 3 2. Nei vincoli &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 10. &amp;quot;Carte basse&amp;quot; = 8..2.&lt;br /&gt;
* &#039;&#039;&#039;PO / HCP&#039;&#039;&#039;: A=4, K=3, Q=2, J=1. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ecc. = PO nel solo seme.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni e coppie&#039;&#039;&#039;: coppia dichiarante = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; difesa = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;+&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Senso di gioco: opener → opp1 → responder → opp2 (orario). Lo stesso per l&#039;attaccante: siede a sinistra del dichiarante (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = opener → attacca opp1; responder → opp2; opp1 → responder; opp2 → opener).&lt;br /&gt;
* &#039;&#039;&#039;Forma ordinata&#039;&#039;&#039;: le 4 lunghezze in ordine decrescente (es. 5431).&lt;br /&gt;
* &#039;&#039;&#039;Classi di forma&#039;&#039;&#039; (possono sovrapporsi; le pagine oggi usano solo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;):&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 4333, 4432, 5332.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: 5422, 6322.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;one_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: seme più lungo ≥ 6 e secondo ≤ 3.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;two_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: i due semi più lunghi hanno entrambi ≥ 4 carte e insieme ≥ 9 (5-4, 6-4, 5-5, ...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;three_suiter&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: tre semi ≥ 4 (4441, 5440, 4450...).&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun vincolo. Se la vostra implementazione attuale differisce, allineatela a questa o segnalate la differenza.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;54xx&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la forma ordinata deve corrispondere cifra per cifra; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = qualsiasi.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la lunghezza di H è ≥ di ogni altro seme (pari merito ammesso).&lt;br /&gt;
* &#039;&#039;&#039;Confronti&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A op B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: sulle lunghezze dei due semi nella stessa mano; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; uguali.&lt;br /&gt;
* &#039;&#039;&#039;Controlli&#039;&#039;&#039;: A=2, K=1 (le dame non contano). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; somma sulla mano.&lt;br /&gt;
* &#039;&#039;&#039;Carte chiave per l&#039;atout T&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:T&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): numero di assi (0-4) + 1 se possiede il Re di T. Valori 0-5. La Dama di atout si esprime con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:TQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Fermata&#039;&#039;&#039; nel seme X (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): possiede almeno una tra: A; Kx (Re con ≥ 2 carte nel seme); Qxx (Dama con ≥ 3); Jxxx (Fante con ≥ 4). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessuna di queste.&lt;br /&gt;
* &#039;&#039;&#039;Punti totali &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + (per ogni seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max(0, lunghezza − 4)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;Punti distribuzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: PO + 3 per ogni chicane + 2 per ogni singolo + 1 per ogni doubleton.&lt;br /&gt;
* &#039;&#039;&#039;Perdenti &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (Losing Trick Count): per ogni seme con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;n&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte, considerare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m = min(n,3)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; perdenti del seme = &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;m − (numero di A, K, Q posseduti nel seme)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; somma sui 4 semi. (Seme vuoto = 0.)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): tra A K Q J 10 9 possiede &#039;&#039;esattamente&#039;&#039; quelle elencate; 8..2 liberi. Stringa vuota = nessuna carta alta. Gli onori elencati sono esclusi dalle altre mani solo per quel che riguarda la proprietà: ogni carta ha un unico proprietario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): una sola alternativa (scelta a caso, uniformemente tra quelle compatibili con gli altri vincoli) descrive tutta la mano in quel seme: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + tra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; carte basse (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = illimitato, ma ≤ 13 − len(cards)).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; (jolly di posizione): un seme scelto a caso tra quelli &#039;&#039;non&#039;&#039; vincolati esplicitamente in quella posizione; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si riferisce allo stesso seme. Il jolly &#039;&#039;&#039;non&#039;&#039;&#039; è condiviso con altre posizioni.&lt;br /&gt;
* &#039;&#039;&#039;Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: a inizio generazione ogni variabile usata riceve un seme dal proprio dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, default tutti e quattro). Variabili diverse hanno &#039;&#039;&#039;semi diversi&#039;&#039;&#039;. Una variabile può coincidere con un seme nominato esplicitamente (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): se non è voluto, restringere il dominio (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SD&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La scelta è uniforme tra le assegnazioni che rendono lo scenario soddisfacibile.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: somma delle lunghezze dei due compagni nel seme (o in qualunque seme del tipo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;major&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/ &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;minor&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, a scelta del motore, uniformemente tra i semi che soddisfano il vincolo).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: la mano soddisfa almeno una alternativa. &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A,B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: non ne soddisfa nessuna. Più gruppi → AND. Dentro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;B&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono gli stessi campi di una posizione (senza &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not/fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp.declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; = PO(opener)+PO(responder); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defense&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = PO(opp1)+PO(opp2). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: somma &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Posizioni non nominate&#039;&#039;&#039;: ricevono le carte rimanenti a caso (nessun vincolo); non applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; implicito.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: probabilità relativa di scelta dello scenario quando non è scelto dall&#039;utente (default 1). Non influenza la generazione dentro lo scenario.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;: metadati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = coppia dichiarante) vanno riportati nell&#039;output (PBN/LIN) e mostrati. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è la sequenza da mostrare/verificare (notazione BridgeCards: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;X&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;XX&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1NT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: vedi §5.7.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. Architettura consigliata del motore ==&lt;br /&gt;
&lt;br /&gt;
Pipeline per ogni mano richiesta:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
parse risposta API → controllo requires/errors/warnings&lt;br /&gt;
 → scelta scenario (utente | peso)&lt;br /&gt;
 → ASSEGNAZIONE SIMBOLICA   : variabili $a.., jolly x:, fit, alternative any()/S~, pattern di forma&lt;br /&gt;
 → MATRICE DELLE LUNGHEZZE  : 4 posizioni × 4 semi (somme 13 per riga e per colonna)&lt;br /&gt;
 → ASSEGNAZIONE DELLE CARTE : carte fissate/vincolate, poi resto casuale&lt;br /&gt;
 → RIPARAZIONE PUNTI        : scambi mirati per entrare negli intervalli PO/tp/dp/ltc/controlli&lt;br /&gt;
 → VERIFICA FINALE          : valutazione indipendente di TUTTI i vincoli sulla smazzata completa&lt;br /&gt;
 → output + spiegazione&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Punti chiave:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Verifica finale indipendente&#039;&#039;&#039; (il &amp;quot;giudice&amp;quot;): una funzione pura &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies(deal, scenario, bindings)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che valuta ogni vincolo dalle definizioni di §2. Ogni smazzata emessa deve passarla. Questa funzione è anche la base dei test e del pulsante &amp;quot;verifica&amp;quot; del frontend.&lt;br /&gt;
# &#039;&#039;&#039;Costruzione, non solo scarto.&#039;&#039;&#039; Il rejection sampling puro non regge scenari stretti (es. Gran rever nel Multirever, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con coppia 25+ PO). Costruire prima la matrice delle lunghezze con propagazione dei vincoli (backtracking con limiti per riga/colonna), poi assegnare le carte onore per posizione secondo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;..., infine le basse.&lt;br /&gt;
# &#039;&#039;&#039;Riparazione PO&#039;&#039;&#039;: dopo l&#039;assegnazione, se i PO (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, controlli, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sono fuori intervallo, scambiare due carte tra due mani preservando lunghezze e vincoli &#039;&#039;rigidi&#039;&#039; (carte fissate, pattern). Ricerca locale con budget; poi nuovo tentativo dall&#039;inizio.&lt;br /&gt;
# &#039;&#039;&#039;Uniformità&#039;&#039;&#039;: l&#039;obiettivo è una distribuzione quasi uniforme tra le smazzate che soddisfano lo scenario. Le euristiche di costruzione introducono distorsioni: misuratele (§7.3) e non dichiarate &amp;quot;uniformi&amp;quot; se non lo sono.&lt;br /&gt;
# &#039;&#039;&#039;Budget e fallimenti&#039;&#039;&#039;: limite di tempo (oggi 2,5 s CPU/mano), massimo tentativi, e diagnosi. Su fallimento restituire 422 con i &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; di §6, mai una smazzata che viola i vincoli.&lt;br /&gt;
# &#039;&#039;&#039;Riproducibilità&#039;&#039;&#039;: stesso &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + stessa versione del DSL → stessa smazzata. Salvare nel record &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; della pagina se disponibile.&lt;br /&gt;
# &#039;&#039;&#039;Concorrenza e cache&#039;&#039;&#039;: cache del JSON dell&#039;API per pagina con TTL breve (60 s) e rivalidazione sulla &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; mai servire DSL non validato.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Ordine di risoluzione dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, jolly &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (decidono &#039;&#039;quali&#039;&#039; semi).&lt;br /&gt;
# Alternative: scegliere un ramo per ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e ogni &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (escludendo i rami impossibili con i vincoli già noti); applicare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come vincoli di esclusione.&lt;br /&gt;
# Lunghezze (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Carte precise (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held/not_held&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Conteggi (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Punteggi derivati (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Verifica finale.&lt;br /&gt;
&lt;br /&gt;
Un vincolo è &amp;quot;rigido&amp;quot; se riguarda carte/lunghezze fissate (1-4); &amp;quot;morbido&amp;quot; se si ripara per scambio (5-6).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Semantica delle combinazioni delicate ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è già espanso in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: nessun trattamento speciale (il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; serve solo alla descrizione). Una difesa quiet &#039;&#039;&#039;riduce&#039;&#039;&#039; il margine PO per la coppia dichiarante: verificare la compatibilità prima di costruire (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;...).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Shcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: devono essere coerenti; l&#039;API segnala le contraddizioni evidenti.&lt;br /&gt;
* Una carta (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) può comparire in una sola posizione; due posizioni con la stessa carta sono un errore di validazione, non un caso da risolvere a caso.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; dentro una posizione con variabili: le variabili si legano &#039;&#039;&#039;prima&#039;&#039;&#039;, poi si sceglie il ramo.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: escludere dall&#039;insieme di alternative, non solo filtrare a posteriori.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; valgono sulle lunghezze finali (dopo il bind delle variabili).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): la carta deve stare nella mano dell&#039;attaccante (§2) e quella mano deve soddisfare i suoi vincoli (es. se ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è coerente, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; no).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Funzionalità del motore (elenco completo da realizzare) ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Core (parità v1) — già in produzione, da conservare ===&lt;br /&gt;
Lunghezze, PO totali/per seme, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(espanso), 422 con ragioni, tetto 2,5 s.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Nuove funzioni DSL v2 ===&lt;br /&gt;
Tutte le righe di §1.1. Priorità di consegna in §9.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Mani multiple e serie ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;count&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ≤ 100 per richiesta; opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;distinct: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nessuna mano duplicata nella serie);&lt;br /&gt;
opzione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;balance: &amp;quot;round_robin&amp;quot; &amp;amp;#124; &amp;quot;weighted&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per distribuire gli scenari della stessa convenzione.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Spiegazione per mano ===&lt;br /&gt;
Per ogni smazzata: per posizione, elenco dei vincoli con esito (✓) e valore effettivo&lt;br /&gt;
(&amp;quot;♥: 5 carte, richiesto 5+&amp;quot;), e i &#039;&#039;&#039;binding&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x di opener = ♦&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). Serve al frontend.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 Verifica di una smazzata data ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;POST /api/deals/check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con quattro mani e una &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → elenco di vincoli soddisfatti/violati.&lt;br /&gt;
Usa lo stesso giudice del §3. Serve a: smazzate inserite a mano, correzione in aula, test.&lt;br /&gt;
&lt;br /&gt;
=== 5.6 Mani parzialmente fissate (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
Accettare mani complete o parziali (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;opener&amp;quot;: &amp;quot;SAK2.&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o carte singole) e completare il resto&lt;br /&gt;
rispettando lo scenario. Se impossibile → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 5.7 Contesto di gioco della carta ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il motore garantisce che la carta d&#039;attacco sia nella mano giusta e&lt;br /&gt;
fornisce nel risultato &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;play: { &amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;, &amp;quot;declarer&amp;quot;:&amp;quot;responder&amp;quot;, &amp;quot;leader&amp;quot;:&amp;quot;opp2&amp;quot;, &amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot; }&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
(Il gioco successivo, oltre la prima carta, non è nel DSL: per Segnali e Attacchi la prima carta e le&lt;br /&gt;
mani bastano a mostrare la situazione.)&lt;br /&gt;
&lt;br /&gt;
=== 5.8 Statistiche ===&lt;br /&gt;
Per scenario: tasso di successo, tentativi medi, p95 ms, codici di fallimento. Esposte in&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;GET /api/deals/stats&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e inviate a BridgePedia (§8.5) per tarare i vincoli.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Codici di errore (422 e simili) ==&lt;br /&gt;
&lt;br /&gt;
Già in uso: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;exact_cards_always_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;generation_time_limit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_below_hcp_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_minimums_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards_exceed_hcp_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Da aggiungere:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Codice&lt;br /&gt;
! Quando&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| lo scenario richiede un tag non supportato (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;detail&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il tag)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl_errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| l&#039;API ha restituito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (riportarli)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;variable_unsatisfiable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna assegnazione dei semi variabili rende lo scenario possibile&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed_cards_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contraddice lo scenario o carte duplicate&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp/pairtp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibili con i limiti per posizione&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; incompatibile con la mano dell&#039;attaccante&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;no_branch_left&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; eliminano tutti i rami&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_unreachable&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| forma/lunghezze incompatibili con 13 carte per mano e per seme&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;invalid_request&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| parametri non validi (count, seed...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni 422 porta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;reasons: [{code, position?, detail}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; leggibili dal frontend.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Test di conformità e qualità ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Invarianti (property test, ≥ 10.000 smazzate per scenario del wiki) ===&lt;br /&gt;
* 52 carte distinte; 13 per mano; nessun duplicato.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vero per ogni smazzata emessa (il giudice &#039;&#039;&#039;non&#039;&#039;&#039; deve condividere codice con il generatore).&lt;br /&gt;
* Stesso seed → stesso risultato.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Casi minimi per costrutto (la DSL → cosa deve valere) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! #&lt;br /&gt;
! DSL&lt;br /&gt;
! Asserzione&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener S:5+ hcp:12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ♠ ≥ 5, PO in intervallo&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S opener ${M}:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| due scenari generabili (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M opener $a:5+; responder $a:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| in ogni mano: un nobile ≥5 in opener, lo stesso seme ≥3 in responder; entrambi i nobili compaiono su 1000 mani&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M $b=m opener $a:5+ $b:4+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| $a nobile, $b minore, mai lo stesso seme&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; su 1000 mani&lt;br /&gt;
| tutte le mani hanno A, Kx, Qxx o Jxxx a ♠&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener nostop:S S:3+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessuna mano con A, né Kx, Qxx o Jxxx a ♠ (con 3 carte: né A, né K, né Q)&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener aces:2 kc:H4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 2 assi; assi + K♥ = 4&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener has:HQ lacks:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Q♥ presente, K♠ assente&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener tp:20-22&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; corretto con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener ltc:6-7&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| LTC con la definizione di §2&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener H&amp;gt;=S longest:H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| confronti rispettati; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con pari merito&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 5 e 4 come due semi più lunghi in ordine; gli altri due sommano 4&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener shape:semi_balanced&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| solo 5422 e 6322&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:5+, H:5+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| almeno un nobile ≥ 5&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener not(S:4+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| nessun nobile ≥ 4&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener any(S:4+ hcp:12+, H:4+)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| rami composti&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+ ... opp1 quiet; opp2 quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| coppia ≥ 25, avversari entro i limiti quiet&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:1 ... // weight:3 ...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| 1000 estrazioni ~ 25%/75% (± tolleranza)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opp1 vul:both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| output con dealer/vul corretti e PBN ruotato&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder lead:SK opp2 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| K♠ in opp2; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead_conflict&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con Q♥ in opener&lt;br /&gt;
| opener ha Q♥ e rispetta lo scenario&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| scenario impossibile (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=AK Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
| 422 con ragione&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| scenario con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; simulato&lt;br /&gt;
| 422 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aggiungere come test di regressione &#039;&#039;&#039;tutti gli scenari reali&#039;&#039;&#039; delle pagine del wiki&lt;br /&gt;
(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): per ciascuno ≥ 1000 smazzate valide entro il budget, oppure una&lt;br /&gt;
diagnosi documentata. Gli scenari più duri oggi: &#039;&#039;Multirever&#039;&#039; (Gran rever, 20 scenari) e&lt;br /&gt;
&#039;&#039;Segnale di Smith&#039;&#039; (20 scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== 7.3 Qualità statistica ===&lt;br /&gt;
Per ogni scenario del wiki misurare su 5000 mani: distribuzione delle lunghezze e dei PO nei limiti&lt;br /&gt;
consentiti, tasso di riuscita al primo tentativo, tempo p50/p95. Segnalare distorsioni evidenti&lt;br /&gt;
(es. la posizione A prende sempre i PO alti).&lt;br /&gt;
&lt;br /&gt;
=== 7.4 Prestazioni ===&lt;br /&gt;
Obiettivo: p95 &amp;lt; 300 ms per mano sugli scenari comuni; &amp;lt; 2,5 s sul peggiore. Se non si rispetta,&lt;br /&gt;
non allargare i vincoli: segnalare lo scenario a BridgePedia (§8.5) che può rivederlo.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 8. Frontend di Play ==&lt;br /&gt;
&lt;br /&gt;
Il frontend deve permettere di &#039;&#039;&#039;consultare&#039;&#039;&#039;, &#039;&#039;&#039;generare&#039;&#039;&#039;, &#039;&#039;&#039;creare&#039;&#039;&#039; e &#039;&#039;&#039;gestire&#039;&#039;&#039; smazzate.&lt;br /&gt;
Lingua: italiano, con i18n predisposta (en, fr, es, de). Tutti i testi dei vincoli vengono&lt;br /&gt;
dall&#039;API (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, parametro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): non riscriverli.&lt;br /&gt;
&lt;br /&gt;
=== 8.1 Catalogo delle convenzioni ===&lt;br /&gt;
* Elenco da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con vincoli) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tutte, con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hasShape&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Per ogni voce: titolo, numero di scenari, link alla pagina del wiki, stato: &#039;&#039;generabile&#039;&#039;, &#039;&#039;parzialmente generabile&#039;&#039; (alcuni scenari con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non supportato), &#039;&#039;non generabile&#039;&#039;.&lt;br /&gt;
* Ricerca testuale; filtri per tipologia/sistema se esposti; badge &amp;quot;da verificare&amp;quot; per le traduzioni non verificate.&lt;br /&gt;
* Le 27 convenzioni senza vincoli compaiono come &amp;quot;scenari in arrivo&amp;quot; con link al wiki.&lt;br /&gt;
&lt;br /&gt;
=== 8.2 Visualizzatore di scenario ===&lt;br /&gt;
* Tabella a colonne per posizione (come la tabella del wiki): etichetta scenario, frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions[i].positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (rispettare i ruoli personalizzati, es. &amp;quot;Attaccante&amp;quot;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Semi ♥ ♦ in rosso. Mostrare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come chip (tooltip con spiegazione).&lt;br /&gt;
* Pulsante &amp;quot;Mostra DSL&amp;quot; (testo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e &amp;quot;Apri la pagina nel wiki&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 8.3 Generatore ===&lt;br /&gt;
* Scelta convenzione → scenario (singolo, &amp;quot;a caso&amp;quot;, &amp;quot;tutti a rotazione&amp;quot;, pesato) → quantità (1-100) → opzioni (seed, mani distinte, nascondi avversari).&lt;br /&gt;
* Risultato: schede smazzata con 4 mani (formato BridgeCards: ♠♥♦♣, bordi, dealer, vulnerabilità), etichetta scenario, &#039;&#039;&#039;pannello &amp;quot;perché questa mano&amp;quot;&#039;&#039;&#039;: per posizione le frasi di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con spunta, binding (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a = ♥&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), PO/lunghezze effettive.&lt;br /&gt;
* Azioni per smazzata: rigenera, &amp;quot;blocca questa mano e rigenera le altre&amp;quot; (usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), copia link con seed, esporta PBN/LIN/immagine, aggiungi alla raccolta.&lt;br /&gt;
* Se la licita &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è presente: mostrarla con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;bidding&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stile BridgeCards) o nascosta per esercizio (&amp;quot;indovina la risposta&amp;quot;).&lt;br /&gt;
* Gestione 422: messaggio per codice (§6) con suggerimento (&amp;quot;lo scenario è impossibile perché...&amp;quot;). Per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: spiegare quale capacità manca.&lt;br /&gt;
&lt;br /&gt;
=== 8.4 Editor / creazione di scenari ===&lt;br /&gt;
Due modalità sincronizzate:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Modulo guidato&#039;&#039;&#039; per posizione (Apertore, Compagno, Avv. sinistro, Avv. destro):&lt;br /&gt;
#* lunghezze per seme (slider min-max), PO totali e per seme, forma (classi + schema &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5-4-x-x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* griglia carte per seme (A K Q J 10 9 + &amp;quot;basse&amp;quot;) con stati &#039;&#039;deve avere / non deve avere / indifferente&#039;&#039; che produce &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; costruttore di pattern per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con anteprima;&lt;br /&gt;
#* interruttori: fermata (per seme), assi/re/dame/controlli, carte chiave con atout, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp/dp/ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti tra semi, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; come gruppi aggiungibili;&lt;br /&gt;
#* variabili di seme &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a..$d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con dominio (nobili/minori/qualsiasi);&lt;br /&gt;
#* contesto: dealer, vulnerabilità, licita, contratto, attacco, peso;&lt;br /&gt;
#* avversari: pulsante &#039;&#039;&#039;quiet&#039;&#039;&#039; (e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet:max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;);&lt;br /&gt;
#* macro: &amp;quot;ripeti per ogni nobile / minore / seme&amp;quot; genera &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &#039;&#039;&#039;Editor testuale&#039;&#039;&#039; del DSL con evidenziazione, completamento e &#039;&#039;validazione live&#039;&#039;: chiama &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (debounce 400 ms) e mostra &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (con il supporto del motore). Le due modalità si convertono a vicenda (modulo → DSL è obbligatorio; DSL → modulo almeno per i costrutti elementari, il resto resta testuale).&lt;br /&gt;
&lt;br /&gt;
* Pulsante &amp;quot;Prova&amp;quot;: genera 5 mani di test dallo scenario in modifica e mostra tempi e tassi di riuscita.&lt;br /&gt;
* Salvataggio come &#039;&#039;&#039;bozza personale&#039;&#039;&#039; in Play (non scrive sul wiki). Pulsante &amp;quot;Copia per BridgePedia&amp;quot; produce la riga &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; da incollare nella pagina (gli editor del wiki fanno il resto).&lt;br /&gt;
* Libreria di &#039;&#039;&#039;modelli&#039;&#039;&#039; presi dalle convenzioni del wiki (&amp;quot;parti da Landy&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== 8.5 Retroazione verso BridgePedia ===&lt;br /&gt;
* Pulsante &amp;quot;Segnala scenario problematico&amp;quot; (lento / troppo raro / 422 / distribuzione strana) che invia: pagina, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, codice errore, statistiche (§5.8) al canale concordato (sessione/issue). Nessuna scrittura diretta sul wiki.&lt;br /&gt;
* Report periodico automatico delle statistiche di generazione per scenario.&lt;br /&gt;
&lt;br /&gt;
=== 8.6 Smazzate manuali ===&lt;br /&gt;
* Compositore: assegnare le 52 carte alle quattro mani con trascinamento o digitazione (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;AK2.QJ5.K84.T65&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), controllo duplicati, completamento casuale delle carte mancanti (opzionalmente rispettando uno scenario: usa &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Pulsante &amp;quot;Verifica rispetto a uno scenario&amp;quot; (§5.5) con l&#039;elenco dei vincoli soddisfatti e violati.&lt;br /&gt;
* Importa/esporta PBN, LIN, testo semplice.&lt;br /&gt;
&lt;br /&gt;
=== 8.7 Gestione delle smazzate ===&lt;br /&gt;
* Raccolte (&amp;quot;mazzi di esercizio&amp;quot;): nome, descrizione, convenzione, tag; ordinamento; duplicati evitati.&lt;br /&gt;
* Ricerca per convenzione, scenario, tag, data; filtri per vulnerabilità, dealer.&lt;br /&gt;
* Metadati salvati: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;seed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source.page&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scenario, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;revid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, data, autore.&lt;br /&gt;
* Note personali per smazzata; stampa di una raccolta (fogli A4 con 4 o 6 smazzate per pagina, versione &amp;quot;solo mano dell&#039;apertore&amp;quot; per esercizio).&lt;br /&gt;
* Condivisione: link con seed/raccolta, permessi (privato, gruppo, pubblico) secondo il modello utenti di Play. Esportazione in blocco (PBN).&lt;br /&gt;
* Modalità &amp;quot;esercizio di licita&amp;quot;: mostra le mani di un lato, l&#039;utente inserisce la licita, il frontend confronta con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context.auction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se presente.&lt;br /&gt;
&lt;br /&gt;
=== 8.8 Requisiti trasversali ===&lt;br /&gt;
* Mobile first; tastiera accessibile; semi anche come lettere per daltonici.&lt;br /&gt;
* Nessuna dipendenza dal wiki per il rendering delle carte (usare componenti propri; stile coerente con BridgeCards).&lt;br /&gt;
* Tempi: la generazione deve mostrare avanzamento e poter essere annullata.&lt;br /&gt;
* Tracciare (analytics interni) tempi, errori e scenari più usati.&lt;br /&gt;
* Testo dei vincoli sempre da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; coerente con la lingua dell&#039;interfaccia.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 9. Piano di consegna consigliato ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fase&lt;br /&gt;
! Contenuto&lt;br /&gt;
! Esito atteso&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P0 — compatibilità&#039;&#039;&#039; (subito)&lt;br /&gt;
| leggere &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; esporre &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; rifiutare con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;unsupported_feature&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; giudice &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;satisfies()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per v1&lt;br /&gt;
| nessuna smazzata errata con le pagine nuove&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P1 — core v2&#039;&#039;&#039;&lt;br /&gt;
| macro (nessun lavoro, già espanse), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, classi nuove, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any/not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| scenari per Landy/Cappelletti/DONT/Smolen con forme e alternative&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P2 — variabili e carte&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; condivise tra posizioni, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has/lacks&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces/kings/queens/controls/kc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Michaels, Sputnik, Lebensohl, Blackwood/RKCB, Exclusion&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P3 — punteggi&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| sistemi a forza (Fiori forte, 2♣ forte, Gazzilli)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P4 — frontend lettura&#039;&#039;&#039;&lt;br /&gt;
| catalogo, visualizzatore, generatore con spiegazioni&lt;br /&gt;
| tutti possono provare le convenzioni&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P5 — frontend creazione&#039;&#039;&#039;&lt;br /&gt;
| editor guidato + testuale con validazione live, &amp;quot;Prova&amp;quot;, bozze&lt;br /&gt;
| gli editor creano e collaudano scenari senza il wiki&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P6 — gestione&#039;&#039;&#039;&lt;br /&gt;
| raccolte, smazzate manuali, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;check&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, esportazioni, esercizi di licita&lt;br /&gt;
| uso didattico completo&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;P7 — qualità&#039;&#039;&#039;&lt;br /&gt;
| suite di conformità (§7), statistiche, report verso BridgePedia&lt;br /&gt;
| motore misurabile&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ogni fase deve chiudersi con i test di §7 per i costrutti introdotti. BridgePedia estende le&lt;br /&gt;
pagine del wiki man mano che i tag diventano disponibili: &#039;&#039;&#039;comunicate a ogni fase la lista dei tag supportati&#039;&#039;&#039; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;/capabilities&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) così il wiki passa dalle approssimazioni (pattern &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ai&lt;br /&gt;
costrutti nativi solo quando il motore li regge.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 10. Cosa fa BridgePedia (per non sovrapporsi) ==&lt;br /&gt;
&lt;br /&gt;
* Mantiene il DSL, il parser, le descrizioni e l&#039;API; aggiunge costrutti su richiesta motivata.&lt;br /&gt;
* Scrive e tiene aggiornati gli scenari nelle pagine delle convenzioni; le 27 mancanti saranno coperte via via con i costrutti v2.&lt;br /&gt;
* Fornisce il catalogo di ricette (come descrivere Landy, Blackwood, un attacco sotto onore...).&lt;br /&gt;
* Riceve da Play le segnalazioni di §8.5 e rivede i vincoli troppo duri.&lt;br /&gt;
&lt;br /&gt;
== 11. Decisioni aperte (da concordare con Play) ==&lt;br /&gt;
&lt;br /&gt;
# Definizione definitiva delle classi di forma (§2) rispetto a quanto già implementato.&lt;br /&gt;
# Formato di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;explanation&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (testo semplice vs struttura con esito per vincolo).&lt;br /&gt;
# Modello di persistenza e permessi delle raccolte (utenti Play).&lt;br /&gt;
# Canale per le segnalazioni verso BridgePedia (§8.5).&lt;br /&gt;
# Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fixed&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; deve accettare anche vincoli aggiuntivi temporanei (override locali dello scenario).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=1987</id>
		<title>Progetto:BridgeShape API</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Progetto:BridgeShape_API&amp;diff=1987"/>
		<updated>2026-10-23T05:49:06Z</updated>

		<summary type="html">&lt;p&gt;Lpala: BridgeShape: documentazione DSL v2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentazione BridgeShape: [[Progetto:BridgeShape Motore e frontend|Motore e frontend]] · [[Progetto:BridgeShape Ricette DSL|Ricette DSL]]&lt;br /&gt;
&lt;br /&gt;
= BridgeShape — API per Generatori di Smazzate =&lt;br /&gt;
&lt;br /&gt;
Documentazione tecnica per chi sviluppa un generatore di smazzate di test&lt;br /&gt;
che legge i vincoli di distribuzione (shape constraints) dalle convenzioni&lt;br /&gt;
di BridgePedia.&lt;br /&gt;
&lt;br /&gt;
== Panoramica ==&lt;br /&gt;
&lt;br /&gt;
Ogni pagina wiki di convenzione su BridgePedia può definire nel template&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Convenzione}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; un campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; che descrive, in un formato&lt;br /&gt;
DSL compatto, i vincoli di distribuzione delle mani dei 4 giocatori al tavolo.&lt;br /&gt;
&lt;br /&gt;
L&#039;estensione &#039;&#039;&#039;BridgeShape&#039;&#039;&#039; espone un&#039;API REST/JSON per leggere questi&lt;br /&gt;
vincoli in modo strutturato.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== API Endpoint ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
GET /api.php?action=bridgeshape&amp;amp;shapeaction=ACTION&amp;amp;format=json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Azioni disponibili ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Azione&lt;br /&gt;
! Descrizione&lt;br /&gt;
! Parametri&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Vincoli per una singola convenzione&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pageid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oppure &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;title&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco convenzioni con vincoli definiti&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;listall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Elenco tutte le convenzioni (con/senza vincoli)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Valida una stringa DSL senza bisogno di una pagina wiki&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dsl&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi di chiamata ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Per titolo pagina&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;title=Splinter&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Per page ID&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=get&amp;amp;pageid=42&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Elenco pagine con vincoli&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=list&amp;amp;format=json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Validare una stringa DSL&lt;br /&gt;
curl &amp;quot;https://bridgepedia.it/api.php?action=bridgeshape&amp;amp;shapeaction=validate&amp;amp;dsl=opener+H:5%2B+hcp:12-21&amp;amp;format=json&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato risposta JSON ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;shapeconstraints&amp;quot;: {&lt;br /&gt;
    &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
    &amp;quot;raw&amp;quot;: &amp;quot;1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 // ...&amp;quot;,&lt;br /&gt;
    &amp;quot;scenarios&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;label&amp;quot;: &amp;quot;1H-4C&amp;quot;,&lt;br /&gt;
        &amp;quot;positions&amp;quot;: {&lt;br /&gt;
          &amp;quot;opener&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 5, &amp;quot;max&amp;quot;: null }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 12, &amp;quot;max&amp;quot;: 21 }&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;responder&amp;quot;: {&lt;br /&gt;
            &amp;quot;suits&amp;quot;: {&lt;br /&gt;
              &amp;quot;H&amp;quot;: { &amp;quot;min&amp;quot;: 4, &amp;quot;max&amp;quot;: null },&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 1 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;suit_hcp&amp;quot;: {&lt;br /&gt;
              &amp;quot;C&amp;quot;: { &amp;quot;min&amp;quot;: 0, &amp;quot;max&amp;quot;: 0 }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;hcp&amp;quot;: { &amp;quot;min&amp;quot;: 10, &amp;quot;max&amp;quot;: 15 }&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;fit&amp;quot;: []&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Descrizioni leggibili.&#039;&#039;&#039; Insieme a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;scenarios&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;descriptions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (stesso ordine): per ogni scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;label&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positions&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(per posizione, elenco di frasi già tradotte, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;♠: ha K J 10 (e non A Q 9)&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;positionLabels&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (nome del ruolo, es. &amp;quot;Attaccante&amp;quot; se la pagina ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_roles&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
altrimenti &amp;quot;Apertore (chi usa la convenzione)&amp;quot;, &amp;quot;Compagno&amp;quot;, ...) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Parametro opzionale &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lang&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (it, en, ...; default lingua dell&#039;API, di solito &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;it&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
Serve a mostrare nell&#039;interfaccia di Play &#039;&#039;&#039;perché&#039;&#039;&#039; la mano è fatta così.&lt;br /&gt;
Nella posizione compare anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet: 1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; se è stata usata la macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shapeaction=list&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;pages&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 42,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Splinter&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 6,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;1H-4C&amp;quot;, &amp;quot;1H-4D&amp;quot;, &amp;quot;1H-4S&amp;quot;, &amp;quot;1S-4C&amp;quot;, &amp;quot;1S-4D&amp;quot;, &amp;quot;1S-4H&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;pageId&amp;quot;: 15,&lt;br /&gt;
      &amp;quot;title&amp;quot;: &amp;quot;Stayman&amp;quot;,&lt;br /&gt;
      &amp;quot;scenarioCount&amp;quot;: 2,&lt;br /&gt;
      &amp;quot;labels&amp;quot;: [&amp;quot;fit a cuori&amp;quot;, &amp;quot;fit a picche&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Formato DSL ==&lt;br /&gt;
&lt;br /&gt;
Il DSL (Domain Specific Language) è la stringa scritta nel campo&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_constraints&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; del template wiki.&lt;br /&gt;
&lt;br /&gt;
=== Struttura ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
etichetta: vincoli posizione; vincoli posizione // etichetta: vincoli // ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;//&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa gli scenari (il generatore ne sceglie uno random o li presenta all&#039;utente)&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039; separa le posizioni dentro uno scenario&lt;br /&gt;
* Ogni scenario ha un&#039;&#039;&#039;&#039;etichetta&#039;&#039;&#039; opzionale seguita da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* Ogni posizione inizia col nome del ruolo, seguito da vincoli separati da spazi&lt;br /&gt;
&lt;br /&gt;
=== Posizioni ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Nome&lt;br /&gt;
! Ruolo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Chi apre o fa la prima licita convenzionale&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Il compagno dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a sinistra dell&#039;opener&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Avversario a destra dell&#039;opener (compagno di opp1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vincoli ===&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:5+       — almeno 5 picche&lt;br /&gt;
H:0-1      — 0 o 1 cuori&lt;br /&gt;
D:3        — esattamente 3 quadri&lt;br /&gt;
C:2-5      — da 2 a 5 fiori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Semi: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Spades/Picche, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Hearts/Cuori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;D&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Diamonds/Quadri, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = Clubs/Fiori&lt;br /&gt;
&lt;br /&gt;
==== Lunghezza seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
x:0-1      — un seme qualsiasi (tra quelli non specificati) con 0-1 carte&lt;br /&gt;
x:6+       — un seme non specificato con almeno 6 carte&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il generatore sceglie casualmente quale seme assegnare a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; tra quelli&lt;br /&gt;
non già vincolati esplicitamente (S/H/D/C).&lt;br /&gt;
&lt;br /&gt;
==== HCP totali ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
hcp:15-17  — da 15 a 17 punti onore&lt;br /&gt;
hcp:12+    — almeno 12 punti&lt;br /&gt;
hcp:0-7    — da 0 a 7 punti&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (specifico) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Shcp:3+    — almeno 3 HCP a picche&lt;br /&gt;
Chcp:0     — 0 HCP a fiori (nessun onore)&lt;br /&gt;
Hhcp:0-2   — da 0 a 2 HCP a cuori&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HCP nel seme (wildcard) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
xhcp:0     — 0 HCP nel seme wildcard (x)&lt;br /&gt;
xhcp:0-1   — 0-1 HCP nel seme x&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shape class ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
shape:balanced      — distribuzione bilanciata (4333, 4432, 5332)&lt;br /&gt;
shape:one_suiter    — monocolore&lt;br /&gt;
shape:two_suiter    — bicolore&lt;br /&gt;
shape:three_suiter  — tricolore&lt;br /&gt;
shape:any           — qualsiasi (default)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Onori esatti in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S=KJT      — in picche ha K, J e 10; NON ha A, Q, 9 (le carte basse 8-2 completano)&lt;br /&gt;
S=KT9      — sequenza interna: K, 10, 9; NON ha A, Q, J&lt;br /&gt;
H=Q        — a cuori ha la Q come unico onore tra A K Q J 10&lt;br /&gt;
D=x        — nessun onore a quadri (solo carte basse)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le lettere ammesse sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). La regola è: &#039;&#039;&#039;le carte elencate sono possedute, le altre tra A K Q J 10 9 NON lo sono&#039;&#039;&#039;; le carte&lt;br /&gt;
dall&#039;8 in giù sono libere e riempiono fino alla lunghezza del seme. Serve a&lt;br /&gt;
descrivere attacchi (sequenza interrotta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, interna &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;KT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, sotto onore &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;K&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Q&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) e le carte del compagno. Si combina con la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:5 S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;quot;S&amp;quot;: &amp;quot;KJT&amp;quot;, &amp;quot;H&amp;quot;: &amp;quot;&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(stringa vuota = nessuna carta alta). Il generatore deve:&lt;br /&gt;
* assegnare esattamente quegli onori alla mano e &#039;&#039;&#039;escluderli&#039;&#039;&#039; dalle altre mani del seme; gli onori non nominati da nessuna posizione sono distribuiti a caso, ma mai a una posizione con &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; per quel seme che non li elenca;&lt;br /&gt;
* rispettare comunque &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (la validazione segnala le contraddizioni, es. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KQ Shcp:0-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o lo stesso onore a due mani).&lt;br /&gt;
&lt;br /&gt;
==== Pattern di mano in un seme (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, stile regex) ====&lt;br /&gt;
&lt;br /&gt;
Descrive &#039;&#039;&#039;l&#039;intera mano in quel seme&#039;&#039;&#039;, dall&#039;alto in basso, come una piccola&lt;br /&gt;
espressione regolare ancorata (inizio e fine):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S~AKQ.          — A, K, Q + una carta bassa (4 carte)&lt;br /&gt;
S~A...          — A + tre carte basse (4 carte)&lt;br /&gt;
S~AJT9.         — A, J, 10, 9 + una bassa&lt;br /&gt;
S~AKQ.|A...     — alternative: una OPPURE l&#039;altra&lt;br /&gt;
S~[KQ]x{2,3}    — K o Q (come unico onore) + 2 o 3 carte basse&lt;br /&gt;
S~KJT.*         — K, J, 10 + qualunque numero di basse (anche zero)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi:&lt;br /&gt;
* &#039;&#039;&#039;Carte alte&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;A K Q J T 9&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &#039;&#039;&#039;sempre in ordine decrescente&#039;&#039;&#039;, ciascuna posseduta; quelle non nominate tra A K Q J 10 9 NON sono possedute.&lt;br /&gt;
* &#039;&#039;&#039;Classe&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[KQ]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = una carta tra quelle (si espande in alternative).&lt;br /&gt;
* &#039;&#039;&#039;Carta bassa&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) = una carta qualsiasi tra 8 e 2; compare solo in fondo. Quantificatori: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;?&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0-1), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (0 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (1 o più), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{n,m}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Più punti si sommano (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = tre basse).&lt;br /&gt;
* &#039;&#039;&#039;Alternative&#039;&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;#124;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: il generatore ne sceglie una a caso per ogni mano.&lt;br /&gt;
&lt;br /&gt;
È la forma più espressiva di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S=KJT&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che resta valida): il pattern fissa anche&lt;br /&gt;
la lunghezza (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S~A...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = 4 carte). Se c&#039;è anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S:N&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; i due vincoli devono&lt;br /&gt;
essere compatibili (la validazione API segnala le incompatibilità).&lt;br /&gt;
&lt;br /&gt;
Nel JSON compare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella posizione, già &#039;&#039;&#039;normalizzato&#039;&#039;&#039; (classi&lt;br /&gt;
espanse, quantificatori risolti), così il generatore non deve interpretare la&lt;br /&gt;
regex:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;suit_patterns&amp;quot;: {&lt;br /&gt;
  &amp;quot;S&amp;quot;: [&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;AKQ&amp;quot;, &amp;quot;low_min&amp;quot;: 1, &amp;quot;low_max&amp;quot;: 1},&lt;br /&gt;
    {&amp;quot;cards&amp;quot;: &amp;quot;A&amp;quot;,   &amp;quot;low_min&amp;quot;: 3, &amp;quot;low_max&amp;quot;: 3}&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = carte alte possedute (ordine A K Q J T 9); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; =&lt;br /&gt;
numero di carte basse (2-8), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;low_max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = nessun limite. La lunghezza del&lt;br /&gt;
seme è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;len(cards) + numero di basse&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Il generatore sceglie una alternativa e&lt;br /&gt;
rispetta anche &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Gli onori di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; vanno esclusi dalle altre&lt;br /&gt;
mani; quelli non nominati nella mano vanno ad altri a caso.&lt;br /&gt;
&lt;br /&gt;
==== Avversari &amp;quot;quiet&amp;quot; (nessun intervento) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opp1 quiet           — solo per opp1/opp2&lt;br /&gt;
opp2 quiet:0-7       — come quiet, ma con HCP personalizzati&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è una &#039;&#039;&#039;macro espansa dall&#039;API&#039;&#039;&#039;: nel JSON non compare mai la parola&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ma i vincoli già risolti. Chi legge l&#039;API (il generatore) non deve&lt;br /&gt;
implementare nulla di nuovo. Si espande in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
S:0-4 H:0-4 D:0-5 C:0-5 hcp:0-9 Shcp:0-3 Hhcp:0-3 Dhcp:0-4 Chcp:0-4&lt;br /&gt;
(con quiet:0-7 → hcp:0-7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significato: gli avversari possono avere colori lunghi (così le mani sono&lt;br /&gt;
varie), ma poveri di onori e con pochi punti: nessun colore da 6+ carte&lt;br /&gt;
(niente apertura di sbarramento), nessun contro informativo, nessun intervento&lt;br /&gt;
naturale credibile. Le distribuzioni ammesse sono quindi molte, ma con punti&lt;br /&gt;
ridotti: il generatore ha meno margine sugli HCP della coppia dichiarante&lt;br /&gt;
(40 punti totali: apertore+rispondente restano sopra ~22).&lt;br /&gt;
I token espliciti scritti sulla stessa posizione &#039;&#039;&#039;sostituiscono&#039;&#039;&#039; i default,&lt;br /&gt;
in qualsiasi ordine: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1 quiet S:0-4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; lascia le picche 0-4 e tiene il resto.&lt;br /&gt;
Su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; la macro viene ignorata.&lt;br /&gt;
&lt;br /&gt;
==== Fit (vincolo cross-posizione) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit:H8+    — almeno 8 cuori totali tra i compagni&lt;br /&gt;
fit:S9+    — almeno 9 picche totali tra i compagni&lt;br /&gt;
fit:M8+    — almeno 8 carte in un seme maggiore (H o S)&lt;br /&gt;
fit:m8+    — almeno 8 carte in un seme minore (D o C)&lt;br /&gt;
fit:8+     — almeno 8 carte in un seme qualsiasi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il fit si applica tra &#039;&#039;&#039;compagni&#039;&#039;&#039;:&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, o a livello di scenario → coppia dichiarante&lt;br /&gt;
* Se appare su &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → coppia difensiva&lt;br /&gt;
&lt;br /&gt;
=== Formato range ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sintassi&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Almeno 5 (min=5, max=null)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;0-1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 0 a 1 (min=0, max=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Esattamente 3 (min=3, max=3)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;12-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Da 12 a 21 (min=12, max=21)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nella risposta JSON, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; significa &amp;quot;nessun limite superiore&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Semi non menzionati ===&lt;br /&gt;
&lt;br /&gt;
I semi &#039;&#039;&#039;non vincolati&#039;&#039;&#039; e non coperti da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; sono distribuiti &#039;&#039;&#039;casualmente&#039;&#039;&#039;&lt;br /&gt;
dal generatore, rispettando il vincolo che il totale delle carte per mano sia 13.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== DSL versione 2 (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dslVersion: 2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
Tutto ciò che sopra resta valido e &#039;&#039;&#039;invariato&#039;&#039;&#039;: una pagina che usa solo la v1&lt;br /&gt;
produce lo stesso JSON di prima. La v2 aggiunge sintassi nuova; ogni scenario che&lt;br /&gt;
la usa ha nel JSON il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (elenco di tag, vedi sotto) così un motore&lt;br /&gt;
parziale può rifiutarlo con un errore esplicito invece di generare mani sbagliate.&lt;br /&gt;
Le definizioni normative (cosa è una fermata, i punti totali, le perdenti...) e&lt;br /&gt;
l&#039;architettura del motore sono in &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;DEAL_ENGINE_SPEC.md&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Macro di scrittura (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@NOME=v1,v2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) — risolte dal parser, il motore non le vede ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@M=H,S  1${M}: opener ${M}:5+ hcp:12-21; responder ${M}:3+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Genera due scenari (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;1S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) sostituendo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;${M}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ovunque, etichetta compresa.&lt;br /&gt;
Più prefissi fanno il prodotto cartesiano (max 64 scenari): &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@M=H,S @N=15-17,12-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
I valori possono essere intervalli (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;hcp:${N}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;): servono anche come parametri del&lt;br /&gt;
sistema (SA 15-17 contro 14-16).&lt;br /&gt;
&lt;br /&gt;
=== Semi variabili &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a $b $c $d&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Un seme &amp;quot;da scegliere&amp;quot; condiviso da più posizioni dello stesso scenario. Ogni&lt;br /&gt;
variabile è un seme diverso dalle altre. Dominio dichiarato a livello di scenario&lt;br /&gt;
(prima delle posizioni):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Landy: $a=M $b=any  opener hcp:12-21 ; opp1 $a:5+ $b:4+ ; responder $a:0-2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=M&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nobili, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=m&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; minori, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=any&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (default) qualunque, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=SH&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; insieme esplicito.&lt;br /&gt;
Si usano al posto di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;S H D C&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a:5+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lunghezza), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$ahcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a=KQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a~...&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:$aQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, confronti (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;$a&amp;gt;$b&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest:$a&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Differisce da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (che vale per una sola posizione).&lt;br /&gt;
JSON: lo stesso dizionario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suits&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_hcp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, ... ma con chiave &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;$a&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
a livello di scenario &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;vars&amp;quot;: {&amp;quot;$a&amp;quot;: [&amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;]}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Controlli, carte chiave, carte precise ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Token&lt;br /&gt;
! Significato&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces:2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings:1-2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens:0&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| numero di assi / re / dame nella mano&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls:6+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| controlli (A=2, K=1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:H2-3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kc:$a3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| carte chiave con atout H: i 4 assi + il Re di H (0-5)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;has:S10&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| possiede quella carta precisa&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lacks:HQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NON possiede quella carta&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nostop:S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| ha / non ha una fermata nel seme (definizione in SPEC)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;aces&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;kings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;queens&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;keycards: {&amp;quot;H&amp;quot;: Range}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_held: [&amp;quot;HQ&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;cards_not_held: [&amp;quot;SK&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers: {&amp;quot;S&amp;quot;: 1, &amp;quot;H&amp;quot;: 0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(1 = deve averla, 0 = non deve averla).&lt;br /&gt;
&lt;br /&gt;
=== Punti e perdenti ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti totali (PO + 1 per ogni carta oltre la quarta in ogni seme),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; punti distribuzione (PO + 3 chicane + 2 singolo + 1 doubleton),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; perdenti (Losing Trick Count). A livello di scenario: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairhcp:25+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
(PO della coppia dichiarante), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;defhcp:0-14&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (coppia avversaria), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pairtp:26+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;tp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dp&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ltc&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (Range) nella posizione; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_hcp: {&amp;quot;declarer&amp;quot;: R, &amp;quot;defense&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_tp: {&amp;quot;declarer&amp;quot;: R}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nello scenario.&lt;br /&gt;
&lt;br /&gt;
=== Confronti tra semi e forme precise ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
H&amp;gt;S   H&amp;gt;=S   H&amp;lt;S   H&amp;lt;=S   H==S   $a&amp;gt;$b      — confronto di lunghezze nella stessa mano&lt;br /&gt;
longest:H                                      — H è tra i semi più lunghi (pari merito ammesso)&lt;br /&gt;
shape:5-4-x-x   shape:5422   shape:54xx        — lunghezze ordinate in modo decrescente, x = qualsiasi&lt;br /&gt;
shape:semi_balanced                            — 5422 e 6322 (si aggiunge alle classi esistenti)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare: [{&amp;quot;left&amp;quot;:&amp;quot;H&amp;quot;,&amp;quot;op&amp;quot;:&amp;quot;&amp;gt;=&amp;quot;,&amp;quot;right&amp;quot;:&amp;quot;S&amp;quot;}]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;longest: [&amp;quot;H&amp;quot;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern: &amp;quot;54xx&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Alternative e negazioni nella stessa mano: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(...)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener any(S:4+ hcp:12+, H:4+)   not(D:6+)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano soddisfa &#039;&#039;&#039;almeno una&#039;&#039;&#039; delle alternative (separate da virgola;&lt;br /&gt;
ogni alternativa è una congiunzione di token). &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not(A, B)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: la mano non soddisfa&lt;br /&gt;
&#039;&#039;&#039;nessuna&#039;&#039;&#039; delle alternative. Si possono scrivere più gruppi (si combinano in AND);&lt;br /&gt;
niente annidamenti.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any: [[altA, altB], ...]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (lista di gruppi; ogni alternativa è un oggetto&lt;br /&gt;
con gli stessi campi di una posizione), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;not: [altA, altB]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Contesto dello scenario ===&lt;br /&gt;
&lt;br /&gt;
Token prima delle posizioni: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight:3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (frequenza relativa, 1-100, default 1),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer:opener&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul:none&amp;amp;#124;us&amp;amp;#124;them&amp;amp;#124;both&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;us&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = apertore+rispondente),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;auction:1SA,P,2C,P&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (licite, notazione BridgeCards; SA = NT), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;contract:4H&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;declarer:responder&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead:SK&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
JSON: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (int) e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context: {&amp;quot;dealer&amp;quot;:..,&amp;quot;vul&amp;quot;:..,&amp;quot;auction&amp;quot;:[..],&amp;quot;contract&amp;quot;:&amp;quot;4H&amp;quot;,&amp;quot;declarer&amp;quot;:..,&amp;quot;lead&amp;quot;:&amp;quot;SK&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Il motore deve usare &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;dealer&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vul&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando li espone (per la numerazione del tavolo) e,&lt;br /&gt;
se c&#039;è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;lead&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, la carta deve stare nella mano dell&#039;attaccante (a sinistra del&lt;br /&gt;
dichiarante) e rispettare i vincoli di quella mano.&lt;br /&gt;
&lt;br /&gt;
=== Tag &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;requires&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_cards&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;suit_patterns&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;vars&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;stoppers&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;card_presence&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (has/lacks),&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;controls&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (aces/kings/queens/controls/kc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (tp/dp/ltc), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pair_points&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;compare&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (confronti, longest), &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;shape_pattern&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;any_not&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;context&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Le macro &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;quiet&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; non compaiono: sono già espanse.&lt;br /&gt;
&lt;br /&gt;
=== Avvisi di parsing (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; restituiscono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; quando un frammento del DSL non è stato&lt;br /&gt;
capito e quindi &#039;&#039;&#039;scartato&#039;&#039;&#039; (nome di posizione sbagliato, token fuori posto). Un&lt;br /&gt;
motore non deve generare se ci sono &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;warnings&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; o &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;errors&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Struttura JSON di uno scenario ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typescript&amp;quot;&amp;gt;&lt;br /&gt;
interface Scenario {&lt;br /&gt;
  label: string;           // Etichetta (es. &amp;quot;1H-4C&amp;quot;), vuota se non specificata&lt;br /&gt;
  positions: {&lt;br /&gt;
    [posName: string]: Position;  // &amp;quot;opener&amp;quot;, &amp;quot;responder&amp;quot;, &amp;quot;opp1&amp;quot;, &amp;quot;opp2&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  fit: FitConstraint[];    // Vincoli di fit (array, può essere vuoto)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Position {&lt;br /&gt;
  suit_patterns?: {         // Pattern regex-like normalizzati: {&amp;quot;S&amp;quot;:[{&amp;quot;cards&amp;quot;:&amp;quot;AKQ&amp;quot;,&amp;quot;low_min&amp;quot;:1,&amp;quot;low_max&amp;quot;:1}]}&lt;br /&gt;
    [suit: string]: { cards: string; low_min: number; low_max: number | null }[];&lt;br /&gt;
  };&lt;br /&gt;
  suit_cards?: { [suit: string]: string };  // Onori esatti, es. {&amp;quot;S&amp;quot;:&amp;quot;KJT&amp;quot;}; &amp;quot;&amp;quot; = nessuna carta alta&lt;br /&gt;
  suits?: {                // Vincoli lunghezza seme (solo semi esplicitati)&lt;br /&gt;
    [suit: string]: Range; // &amp;quot;S&amp;quot;, &amp;quot;H&amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;C&amp;quot;&lt;br /&gt;
  };&lt;br /&gt;
  hcp?: Range;             // HCP totali&lt;br /&gt;
  suit_hcp?: {             // HCP per seme specifico&lt;br /&gt;
    [suit: string]: Range;&lt;br /&gt;
  };&lt;br /&gt;
  x?: Range;               // Lunghezza seme wildcard&lt;br /&gt;
  x_hcp?: Range;           // HCP seme wildcard&lt;br /&gt;
  shape?: string;          // Shape class: &amp;quot;balanced&amp;quot;, &amp;quot;one_suiter&amp;quot;, etc.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface Range {&lt;br /&gt;
  min: number;&lt;br /&gt;
  max: number | null;      // null = nessun limite superiore&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
interface FitConstraint {&lt;br /&gt;
  suit: string | null;      // &amp;quot;S&amp;quot;,&amp;quot;H&amp;quot;,&amp;quot;D&amp;quot;,&amp;quot;C&amp;quot; o null&lt;br /&gt;
  suit_class: string | null; // &amp;quot;major&amp;quot;, &amp;quot;minor&amp;quot; o null&lt;br /&gt;
  min: number;              // Numero minimo di carte (es. 8)&lt;br /&gt;
  pair: string;             // &amp;quot;declarer&amp;quot; o &amp;quot;defense&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logica per il generatore ==&lt;br /&gt;
&lt;br /&gt;
=== Algoritmo base ===&lt;br /&gt;
&lt;br /&gt;
Per ogni scenario:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Scegli lo scenario&#039;&#039;&#039;: random tra quelli disponibili, oppure lascia scegliere all&#039;utente&lt;br /&gt;
# &#039;&#039;&#039;Risolvi wildcard&#039;&#039;&#039;:&lt;br /&gt;
#* Se una posizione ha &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, scegli un seme casuale tra quelli non esplicitamente vincolati&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;xhcp:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; si applica allo stesso seme scelto per &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;x:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Risolvi fit&#039;&#039;&#039;:&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è specificato, entrambi i compagni devono avere un totale &amp;gt;= &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.min&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in quel seme&lt;br /&gt;
#* Se &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.suit_class&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;quot;major&amp;quot;, scegli tra H e S; se &amp;quot;minor&amp;quot;, tra D e C&lt;br /&gt;
#* Se entrambi sono null, scegli un seme qualsiasi&lt;br /&gt;
#* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fit.pair&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; indica quale coppia: &amp;quot;declarer&amp;quot; (opener+responder) o &amp;quot;defense&amp;quot; (opp1+opp2)&lt;br /&gt;
# &#039;&#039;&#039;Genera le mani&#039;&#039;&#039;:&lt;br /&gt;
#* Per ogni posizione, genera una mano che rispetti tutti i vincoli&lt;br /&gt;
#* I semi senza vincoli vengono riempiti casualmente&lt;br /&gt;
#* Il totale delle carte per mano deve essere esattamente 13&lt;br /&gt;
#* Il totale delle carte per seme (tutte e 4 le mani) deve essere esattamente 13&lt;br /&gt;
# &#039;&#039;&#039;Posizioni non menzionate&#039;&#039;&#039;: se uno scenario non menziona &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;opp2&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, distribuisci le carte rimanenti casualmente tra gli avversari&lt;br /&gt;
&lt;br /&gt;
=== Priorità dei vincoli ===&lt;br /&gt;
&lt;br /&gt;
# Vincoli di fit (cross-posizione) — determinano la distribuzione di base&lt;br /&gt;
# Vincoli di seme specifico (S:, H:, D:, C:) — limitano i singoli semi&lt;br /&gt;
# Vincoli wildcard (x:) — dopo aver fissato i semi specifici&lt;br /&gt;
# Vincoli HCP (hcp:, Shcp:, xhcp:) — filtro finale&lt;br /&gt;
# Shape class (shape:) — validazione della forma complessiva&lt;br /&gt;
&lt;br /&gt;
=== Gestione di &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max: null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Quando &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;max&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; è &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;null&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, non c&#039;è limite superiore esplicito. I limiti fisici&lt;br /&gt;
del bridge si applicano comunque:&lt;br /&gt;
* Massimo 13 carte per seme (tutte e 4 le mani)&lt;br /&gt;
* Massimo 13 carte per mano&lt;br /&gt;
* Massimo 10 HCP per seme (A+K+Q+J = 4+3+2+1)&lt;br /&gt;
* Massimo 37 HCP per mano (raro ma teoricamente possibile con tutti gli onori)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Esempi completi ==&lt;br /&gt;
&lt;br /&gt;
=== Splinter (tutti gli scenari specifici) ===&lt;br /&gt;
&lt;br /&gt;
DSL nel template wiki:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
1H-4C: opener H:5+ hcp:12-21; responder H:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1H-4D: opener H:5+ hcp:12-21; responder H:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1H-4S: opener H:5+ hcp:12-21; responder H:4+ S:0-1 Shcp:0 hcp:10-15 //&lt;br /&gt;
1S-4C: opener S:5+ hcp:12-21; responder S:4+ C:0-1 Chcp:0 hcp:10-15 //&lt;br /&gt;
1S-4D: opener S:5+ hcp:12-21; responder S:4+ D:0-1 Dhcp:0 hcp:10-15 //&lt;br /&gt;
1S-4H: opener S:5+ hcp:12-21; responder S:4+ H:0-1 Hhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Splinter (compatto con fit e wildcard) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
dopo 1H: fit:H8+ opener H:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15 //&lt;br /&gt;
dopo 1S: fit:S8+ opener S:5+ hcp:12-21; responder x:0-1 xhcp:0 hcp:10-15&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stayman ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
fit a cuori: fit:H8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder H:4+ hcp:8+ //&lt;br /&gt;
fit a picche: fit:S8+ opener hcp:15-17 S:2-4 H:2-4 D:2-5 C:2-5; responder S:4+ hcp:8+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contro informativo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
base: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; responder hcp:0-8 //&lt;br /&gt;
con intervento: opener hcp:12-21 x:5+; opp1 hcp:12+ S:3+ H:3+ D:3+ C:3+; opp2 hcp:8+ x:5+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preempt 3-a-livello ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
opener H:7+ x:0-1 hcp:5-10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overcall con fit avversari ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
overcall semplice: opener hcp:12-21 x:5+; opp1 hcp:10+ x:5+; opp2 fit:8+ //&lt;br /&gt;
con barrage: opener hcp:12-21 x:5+; opp1 hcp:6-10 x:6+; opp2 fit:9+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Note implementative ==&lt;br /&gt;
&lt;br /&gt;
* L&#039;API è read-only, non richiede token CSRF&lt;br /&gt;
* L&#039;accesso anonimo è abilitato di default (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;BridgeShapeAllowAnonymous: true&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) perché i dati sono pubblici e i tool esterni ne hanno bisogno&lt;br /&gt;
* Il campo &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;raw&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; nella risposta &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;get&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; contiene la stringa DSL originale, utile per debug&lt;br /&gt;
* L&#039;azione &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;validate&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; permette di testare stringhe DSL senza creare pagine wiki&lt;br /&gt;
* I calcoli HCP usano la scala standard: A=4, K=3, Q=2, J=1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Documentazione tecnica]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Segnale_di_Smith&amp;diff=1986</id>
		<title>Segnale di Smith</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Segnale_di_Smith&amp;diff=1986"/>
		<updated>2026-10-22T05:20:36Z</updated>

		<summary type="html">&lt;p&gt;Lpala: shape_roles: nomi dei ruoli negli scenari&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Convenzione&lt;br /&gt;
|nome=Segnale di Smith&lt;br /&gt;
|tipologia=Segnale / difesa&lt;br /&gt;
|scopo=Dare al compagno, con la prima carta libera giocata contro un contratto a senza atout, un&#039;informazione sul gradimento del colore d&#039;attacco: una carta &amp;quot;inutilmente alta&amp;quot; dice che nel colore d&#039;attacco si ha più di quanto si è potuto mostrare (gradimento a scoppio ritardato), la carta più piccola dice che non si gradisce l&#039;attacco o che non si ha più di quanto già mostrato&lt;br /&gt;
|trigger=Esclusivamente contro contratti a senza atout (SA), riguarda solo la prima presa della smazzata. È a disposizione di entrambi i difensori (sia dell&#039;attaccante sia del terzo di mano): vale la prima carta libera giocata da un difensore dopo l&#039;attacco, quando l&#039;avversario muove un suo colore. È una convenzione di coppia che va concordata e poi giocata sempre&lt;br /&gt;
|risposte=Smith positiva (gradimento): prima carta libera &amp;quot;inutilmente alta&amp;quot; (non presumibilmente la più piccola) = nel colore d&#039;attacco ho più di quanto ho potuto mostrare. Smith negativa: prima carta libera la più piccola = non gradisco l&#039;attacco o non ho più di quanto già mostrato. Se alla prima mossa dell&#039;avversario il difensore è costretto a giocare una carta per economia di gioco, non può segnalare e la Smith slitta alla giocata successiva. Per l&#039;attaccante la Smith positiva dice che il colore è praticamente affrancato (tornare in quel colore), la negativa che è meglio cercare di sfondare altrove&lt;br /&gt;
|note=Si applica solo contro SA e non si protrae durante la smazzata. Positiva, negativa e di gradimento sono parti della stessa convenzione. Pericolo: dimenticarsene; se si è d&#039;accordo di giocarla va giocata sempre, senza fare economie sulla carta alta (con 854 per un gradimento si mette l&#039;8). Fonte: Marina Causa, Corso Preagonistica 2026&lt;br /&gt;
|tag_cc=signal_smith&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints = Attacco picche sequenza KJ10: opener S:5-6 S=KJT hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco picche sequenza KT9: opener S:5-6 S=KT9 hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco picche sequenza QT9: opener S:5-6 S=QT9 hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco picche K sotto onore: opener S:4-5 S=K hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco picche Q sotto onore: opener S:4-5 S=Q hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori sequenza KJ10: opener H:5-6 H=KJT hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori sequenza KT9: opener H:5-6 H=KT9 hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori sequenza QT9: opener H:5-6 H=QT9 hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori K sotto onore: opener H:4-5 H=K hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori Q sotto onore: opener H:4-5 H=Q hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri sequenza KJ10: opener D:5-6 D=KJT hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri sequenza KT9: opener D:5-6 D=KT9 hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri sequenza QT9: opener D:5-6 D=QT9 hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri K sotto onore: opener D:4-5 D=K hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri Q sotto onore: opener D:4-5 D=Q hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori sequenza KJ10: opener C:5-6 C=KJT hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori sequenza KT9: opener C:5-6 C=KT9 hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori sequenza QT9: opener C:5-6 C=QT9 hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori K sotto onore: opener C:4-5 C=K hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori Q sotto onore: opener C:4-5 C=Q hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17&lt;br /&gt;
|shape_roles = opener=Attaccante;responder=Compagno dell&#039;attaccante;opp1=Morto;opp2=Dichiarante&lt;br /&gt;
&lt;br /&gt;
|cc_text_default=Segnale di Smith (prima carta libera contro SA)&lt;br /&gt;
|cc_text_default_en=Smith Signal (first free card against notrump)&lt;br /&gt;
|cc_text_signal_smith=Smith: carta alta alla prima carta libera = gradisce seme d&#039;attacco&lt;br /&gt;
|cc_text_signal_smith_en=Smith: high on first free card = likes opening lead suit&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;segnale di Smith&#039;&#039;&#039; è un segnale difensivo che si applica &#039;&#039;&#039;solo contro contratti a senza atout (SA)&#039;&#039;&#039; ed è a disposizione di entrambi i difensori. Dopo l&#039;attacco, la &#039;&#039;&#039;prima carta libera&#039;&#039;&#039; giocata da un difensore parla del &#039;&#039;&#039;gradimento del colore d&#039;attacco&#039;&#039;&#039;: se è &amp;quot;inutilmente alta&amp;quot;, quel difensore sta dicendo che nel colore d&#039;attacco &#039;&#039;&#039;ha più di quanto ha potuto mostrare&#039;&#039;&#039;. È un &amp;quot;gradimento a scoppio ritardato del colore di attacco&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Funzionamento ==&lt;br /&gt;
&lt;br /&gt;
Il segnale di Smith si applica esclusivamente contro SA:&lt;br /&gt;
&lt;br /&gt;
* Lo possono dare &#039;&#039;&#039;entrambi i difensori&#039;&#039;&#039;: sia l&#039;attaccante sia il terzo di mano.&lt;br /&gt;
* Vale la &#039;&#039;&#039;prima carta libera&#039;&#039;&#039; giocata da un difensore: alla prima occasione, quando l&#039;avversario muove un suo colore, il difensore che gioca inutilmente una carta alta (non presumibilmente la più piccola) segnala la Smith di gradimento; se gioca la più piccola mostra di non gradire l&#039;attacco (o di non avere più di quanto già mostrato).&lt;br /&gt;
* Il segnale riguarda il &#039;&#039;&#039;colore d&#039;attacco originale&#039;&#039;&#039; (non il colore su cui si gioca).&lt;br /&gt;
* Se nella prima mossa dell&#039;avversario un difensore è costretto a giocare una carta per economia di gioco, non può segnalare nulla e la Smith slitta alla giocata successiva.&lt;br /&gt;
* La Smith &#039;&#039;&#039;non si protrae durante la smazzata&#039;&#039;&#039;: riguarda solo la prima presa di un contratto a senza.&lt;br /&gt;
&lt;br /&gt;
=== Termini ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Carta libera&#039;&#039;&#039;: carta scelta liberamente, quando non si è impegnati a fare la presa o a giocare una carta precisa per economia di gioco.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;Più di quanto ha potuto mostrare&amp;quot;&#039;&#039;&#039;: ferma restando la grammatica della presa ben conosciuta (e che il terzo di mano sappia che carta giocare quando ha due o più carte equivalenti), significa possedere una carta importantissima per il compagno, né promessa né esclusa nella prima presa.&lt;br /&gt;
&lt;br /&gt;
=== Versioni ===&lt;br /&gt;
&lt;br /&gt;
La fonte descrive la Smith con la carta alta come gradimento. Nella versione precedente di questa pagina era citata anche una versione &amp;quot;rovescia&amp;quot; (carta bassa = gradimento, carta alta = nessun gradimento, indicata come più comune in agonistico): la fonte non la tratta e non ne descrive differenze, per cui non ha una pagina propria.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Versione !! Carta alta !! Carta bassa&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Standard (descritta nella fonte)&#039;&#039;&#039; || Gradimento per l&#039;attacco || Nessun gradimento&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rovescia&#039;&#039;&#039; (citata in precedenza, non nella fonte) || Nessun gradimento || Gradimento per l&#039;attacco&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Perché è utile ==&lt;br /&gt;
&lt;br /&gt;
Il segnale di Smith risolve un problema comune: l&#039;attaccante ha scelto un colore d&#039;attacco ma non sa se continuarlo, perché la sua carta (o quella del compagno) non basta a decidere. Il compagno può comunicare in ritardo il proprio gradimento per quel colore, anche quando l&#039;occasione non si presenta subito.&lt;br /&gt;
&lt;br /&gt;
Esempio motivante: contro 3SA si attacca il 2 di {{picche}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest e il morto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand position=&amp;quot;W&amp;quot;&amp;gt;A10862.Q42.K2.1063&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand position=&amp;quot;N&amp;quot;&amp;gt;97.A105.J10543.KJ2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest non sa se Est ha messo il fante da QJ o da J solo: basta essere d&#039;accordo e giocare la Smith.&lt;br /&gt;
&lt;br /&gt;
== La Smith dell&#039;attaccante ==&lt;br /&gt;
&lt;br /&gt;
Quando l&#039;attacco è ambiguo per il compagno, l&#039;attaccante può chiarire con la Smith.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Attacco di piccola&#039;&#039;&#039;: a volte da Qxxxx (e si vorrebbe che il compagno non perdesse tempo a ritornare), altre da AKxxx o AJxxxx (e se il compagno non ritorna è un infarto). Smith &#039;&#039;&#039;positiva&#039;&#039;&#039; (carta alta) quando il colore è praticamente affrancato; &#039;&#039;&#039;negativa&#039;&#039;&#039; quando si vuol comunicare che sarebbe meglio cercare di sfondare altrove. Esempi di figura (Ovest / Est / morto / Sud): Q9753 / J62 / 84 / AK10 (colore non pronto: cercare altrove); AQ953 / J62 / 84 / K107 (diverso).&lt;br /&gt;
* &#039;&#039;&#039;Attacco di fante o di 10&#039;&#039;&#039;: ambiguo (J108xx contro AJ10xx). Ovest AJ1083, Est 962, morto 74, Sud KQ5: Est deve sapere se Ovest ha 4 prese.&lt;br /&gt;
* &#039;&#039;&#039;Attacchi da doppio onore o anomali da forchetta&#039;&#039;&#039; (per esempio la Dama da AQJxx; oppure A Q 10 6 4 di {{fiori}} dopo che il giocante ha preso in mano con il fante e sappiamo che ha K J): si dice al compagno che deve assolutamente tornare in quel colore giocando una carta ALTA alla prima carta libera. Se si è deciso di regalare un Re per affrancare una lunga (per esempio A Q J 10 4 di {{fiori}}), alla prima occasione si fa una Smith inequivocabile per ordinare al compagno di tornare.&lt;br /&gt;
&lt;br /&gt;
== La Smith del terzo di mano ==&lt;br /&gt;
&lt;br /&gt;
Le situazioni sono ancora più ambigue per l&#039;attaccante. Il terzo di mano segnala tutte le volte che:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;ha impegnato il più basso di due onori contigui&#039;&#039;&#039;: Ovest A10753, morto 84, Est QJ2, Sud K96. Dopo 3, 4, J, K Ovest non sa cosa fare; Est deve segnalare la Dama: nella prossima presa farà Smith.&lt;br /&gt;
# &#039;&#039;&#039;ha filato con l&#039;asso per conservare il controllo su un onore del morto&#039;&#039;&#039;: Ovest J1093, morto K42, Est A86, Sud Q75. Dopo J, 2, 6, Q Ovest non ha la situazione chiara; Est alla prima occasione spiega che l&#039;attacco gli è piaciuto.&lt;br /&gt;
# &#039;&#039;&#039;ha impegnato la più alta di due carte non contigue&#039;&#039;&#039;: Ovest Q10532, morto 864, Est KJ7, Sud A9. Est DEVE giocare il Re e mai il fante; il fante che possiede è carta importantissima per Ovest; con la Smith Est dice &amp;quot;nel colore d&#039;attacco ho più di quanto mi hai visto&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;eccezionalmente&#039;&#039;&#039;, con un numero imprevedibilmente alto di carte nel colore, sapendo che il restante onore è in mano al giocante ma secco, per comunicare all&#039;attaccante la possibilità di incassarsi l&#039;asso: Ovest A952, morto QJ, Est 108763, Sud K4. Giocate 2, J, 8, 4, Est (presupponendo attacco da onore quarto) è quasi certo che Sud sia singolo: appena possibile fa Smith positiva, che Ovest interpreterà come grande lunghezza e quindi tirerà l&#039;asso.&lt;br /&gt;
&lt;br /&gt;
== Il pericolo della Smith ==&lt;br /&gt;
&lt;br /&gt;
Il pericolo è uno solo: dimenticarsene. Se si è d&#039;accordo di giocarla, bisogna giocarla &#039;&#039;&#039;sempre&#039;&#039;&#039;. Per esempio, attaccato da AKxxx, se sul primo colore mosso dal giocante vi scappa un due, il compagno non tornerà più nel colore (è quanto gli avete chiesto di fare). Non fate economie sulla carta alta: se dovete fare Smith di gradimento con 854 mettete l&#039;8.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
&lt;br /&gt;
Otto mani dalla dispensa. Contratto 3SA giocato da Sud; la licita è omessa (non leggibile nella fonte). La fonte indica le carte piccole con &amp;quot;x&amp;quot;: qui sono rese con carte basse scelte arbitrariamente per rispettare il formato, senza alcun significato; le carte indicate esplicitamente sono quelle della fonte.&lt;br /&gt;
&lt;br /&gt;
Per la generazione delle smazzate, nei vincoli le posizioni sono: `opener` = chi attacca, `responder` = il suo compagno, `opp1` = il morto, `opp2` = il dichiarante; i tipi di attacco (sequenza interrotta KJ10, interna KT9, QT9, sotto onore K o Q) sono un&#039;indicazione della redazione di BridgePedia, non tratti dalla dispensa.&lt;br /&gt;
&lt;br /&gt;
=== Mano 1 (attacco 2{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: AK105.AQ102.J103.J2&lt;br /&gt;
E: J9432.J43.A4.AQ3&lt;br /&gt;
S: 76.K5.KQ9765.654&lt;br /&gt;
W: Q8.9876.82.K10987&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Piccola dal morto, Dama di Ovest, asso di Nord; fante di {{quadri}} di Nord, Est liscia, Ovest fornisce il 2 e poi l&#039;8: è una Smith negativa (non ha nulla a {{picche}} oltre l&#039;onore già giocato). Est ricostruisce dall&#039;apertura di 1SA la mano di Nord.&lt;br /&gt;
&lt;br /&gt;
=== Mano 2 (attacco 3{{fiori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 10982.K432.A2.1032&lt;br /&gt;
E: AQ3.J105.Q1043.AKJ&lt;br /&gt;
S: KJ54.76.65.Q9654&lt;br /&gt;
W: 76.AQ98.KJ987.87&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud sa che Est ci prende ancora due volte e che il down va cercato altrove; per dissuadere Nord dal tornare a {{fiori}} fornisce la sua carta più piccola a {{quadri}} o a {{cuori}} a seconda del colore che muoverà Est. Nord prova con successo a sfondare a {{picche}}.&lt;br /&gt;
&lt;br /&gt;
=== Mano 3 (attacco piccola di {{cuori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 432.432.AQ32.AKQ&lt;br /&gt;
E: AJ105.105.J104.8654&lt;br /&gt;
S: KQ76.KQ6.K976.J10&lt;br /&gt;
W: 98.AJ987.85.9732&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest deve fornire la più grossa carta possibile per impedire che Sud (che muove {{picche}}) si trasferisca al morto; Est non deve precipitarsi a prendere.&lt;br /&gt;
&lt;br /&gt;
=== Mano 4 (attacco piccola di {{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: KJ932.KJ2.432.32&lt;br /&gt;
E: 54.43.AJ1065.KJ54&lt;br /&gt;
S: 106.A8765.K7.876&lt;br /&gt;
W: AQ7.Q109.Q98.AQ109&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord, dopo la prima presa, fa Smith negativa: non ha altro oltre quanto detto con l&#039;attacco di piccola; il ritorno a {{cuori}} batte. Con A J di {{picche}} (variante della mano) Nord farebbe Smith positiva: &amp;quot;se torni a {{picche}} sono tutte mie&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte la mano di Sud risulta di 12 carte (le {{picche}} sono 12 in totale invece di 13); è riportata come trascritta, senza correzione.&lt;br /&gt;
&lt;br /&gt;
=== Mano 5 (attacco 6{{cuori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 432.432.J2.AKJ109&lt;br /&gt;
E: KJ5.K10975.A43.74&lt;br /&gt;
S: AQ76.AJ.KQ65.Q63&lt;br /&gt;
W: 1098.Q86.10987.852&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest deve far capire a Est che le {{cuori}} sono tutt&#039;altro (Smith negativa). Sud cerca la nona presa giocando {{fiori}} al morto e il fante di {{quadri}}; Est non deve dormire: precipitarsi con l&#039;asso e tornare {{cuori}}.&lt;br /&gt;
&lt;br /&gt;
=== Mano 6 (attacco 3{{quadri}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: K432.J102.104.AQ32&lt;br /&gt;
E: Q1065.95.KJ9.J1094&lt;br /&gt;
S: A87.AQ43.A82.K65&lt;br /&gt;
W: J9.K876.Q7653.87&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Re di {{quadri}} di Est, asso di Sud; Est segnala il fante di {{quadri}} con Smith positiva (&amp;quot;nel colore d&#039;attacco ho più di quanto mi hai visto&amp;quot;). Ovest, in presa a {{cuori}}, segue con la piccola di {{quadri}} e deve fidarsi: se incassa la Dama blocca il colore e regala 3SA.&lt;br /&gt;
&lt;br /&gt;
=== Mano 7 (attacco 2{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 65.96.AJ1054.Q653&lt;br /&gt;
E: 1084.A8732.K8.984&lt;br /&gt;
S: AQ7.Q104.Q76.AKJ10&lt;br /&gt;
W: KJ932.KJ5.932.72&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest attacca il 2 di {{picche}} e vede il 10 e la Dama di Sud; Est deve fare Smith negativa lasciando che Est scelga liberamente (la Smith negativa dell&#039;attaccante non significa &amp;quot;non voglio che torni&amp;quot;: lascia aperte le altre strade; la positiva vincola al colore iniziale).&lt;br /&gt;
&lt;br /&gt;
Nota: il testo della fonte presenta una svista nei ruoli Est/Ovest (la frase &amp;quot;Est deve fare Smith negativa lasciando che Est scelga&amp;quot; è riportata fedelmente).&lt;br /&gt;
&lt;br /&gt;
=== Mano 8 (attacco 6{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 842.652.KJ96.QJ10&lt;br /&gt;
E: AK1093.1093.872.82&lt;br /&gt;
S: QJ7.AQ.AQ105.A976&lt;br /&gt;
W: 65.KJ874.43.K543&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Est deve lisciare il primo giro (senza ingressi); Sud prende e si trasferisce al morto a {{quadri}} (impasse a {{fiori}}). Ovest deve stare attento alla {{quadri}} giocata da Est: si deve dare l&#039;8, che ribadisce le {{picche}}.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte non descrive varianti del segnale di Smith: Smith positiva, negativa e di gradimento sono parti della stessa convenzione. Una versione &amp;quot;rovescia&amp;quot; era citata nella precedente versione della pagina, ma non risulta nella fonte e non ha pagina propria.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Gradimento_naturale|Gradimento naturale]]&lt;br /&gt;
* [[Gradimento_rovescio|Gradimento rovescio]]&lt;br /&gt;
* [[Segnale_di_conteggio|Segnale di conteggio]]&lt;br /&gt;
* [[Segnale_di_preferenza|Segnale di preferenza]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;02. La &#039;Smith&#039;: un aiuto nel controgioco a Senza&amp;quot; (PDF, 6 pagine).&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Difesa]]&lt;br /&gt;
[[Categoria:Segnali difensivi]]&lt;br /&gt;
[[Categoria:Gioco a senza atout]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Template:Convenzione&amp;diff=1985</id>
		<title>Template:Convenzione</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Template:Convenzione&amp;diff=1985"/>
		<updated>2026-10-22T05:20:35Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Mostra gli scenari shape_constraints in forma leggibile (BridgeShape)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Questo è il template base per le pagine delle convenzioni. Uso:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{Convenzione&lt;br /&gt;
|nome=Stayman&lt;br /&gt;
|tipologia=Apertura / Intervento / Supporto&lt;br /&gt;
|scopo=Ricerca 4° nobile dopo 1NT&lt;br /&gt;
|trigger=Quando il compagno ha dichiarato 1NT&lt;br /&gt;
|risposte=2♦=no 4° nobile; 2♥/2♠=mostra 4 carte nel seme&lt;br /&gt;
|note=Varianti: 4° maggiori, 5-4 Stayman, ecc.&lt;br /&gt;
|tag_cc=response_stayman,opening_1nt&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|cc_text_default=Stayman&lt;br /&gt;
|cc_text_response_1nt=2♣ Stayman&lt;br /&gt;
}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parametri aggiuntivi (opzionali, invisibili):&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;tag_cc&#039;&#039;&#039;: Tag per Convention Card (separati da virgola). Usati dall&#039;estensione BridgeCC per suggerire convenzioni. Es: opening_1nt, response_stayman, slam_rkcb&lt;br /&gt;
* &#039;&#039;&#039;tag_sistema&#039;&#039;&#039;: Tag del sistema. Valori: naturale, quinta_nobile, precision, 2over1, forcing_club&lt;br /&gt;
* &#039;&#039;&#039;cc_text_default&#039;&#039;&#039;: Testo predefinito da inserire nelle Convention Card quando si seleziona questa convenzione. Se non specificato, viene usato il nome della pagina.&lt;br /&gt;
* &#039;&#039;&#039;cc_text_&amp;lt;codice_sezione&amp;gt;&#039;&#039;&#039;: Testo specifico per una sezione della CC (es: cc_text_response_1nt, cc_text_opening_1c). Ha priorità su cc_text_default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Parametri per tabella attacchi (opzionali):&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lead_holding_N&#039;&#039;&#039;: Riga N della tabella attacchi. Formato: &amp;lt;code&amp;gt;Possesso;vs Atout;vs SA;Comp.&amp;lt;/code&amp;gt; (separatore punto e virgola). Esempio: &amp;lt;code&amp;gt;lead_holding_1=AKx;A;A;A&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{DaVerificare}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:18%&amp;quot; | {{#switch:{{PAGELANGUAGE}}|en=Name|fr=Nom|es=Nombre|de=Name|#default=Nome}}&lt;br /&gt;
| {{{nome|{{PAGENAME}}}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{#switch:{{PAGELANGUAGE}}|en=Type|fr=Type|es=Tipo|de=Typ|#default=Tipologia}}&lt;br /&gt;
| {{{tipologia|}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{#switch:{{PAGELANGUAGE}}|en=Purpose|fr=But|es=Propósito|de=Zweck|#default=Scopo}}&lt;br /&gt;
| {{{scopo|}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{#switch:{{PAGELANGUAGE}}|en=Trigger (when to use)|fr=Déclencheur (quand l’utiliser)|es=Desencadenante (cuándo se usa)|de=Auslöser (wann man es einsetzt)|#default=Trigger (quando si usa)}}&lt;br /&gt;
| {{{trigger|}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{#switch:{{PAGELANGUAGE}}|en=Responses / developments|fr=Réponses / développements|es=Respuestas / desarrollos|de=Antworten / Fortsetzungen|#default=Risposte / sviluppi}}&lt;br /&gt;
| {{{risposte|}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{#switch:{{PAGELANGUAGE}}|en=Notes|fr=Notes|es=Notas|de=Hinweise|#default=Note}}&lt;br /&gt;
| {{{note|}}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{lead_holding_1|}}} |&lt;br /&gt;
=== {{#switch:{{PAGELANGUAGE}}|en=Leads table|fr=Tableau des entames|es=Tabla de salidas|de=Ausspieltabelle|#default=Tabella attacchi}} ===&lt;br /&gt;
{{#invoke:StileAttacco|tabella}}&lt;br /&gt;
}}&lt;br /&gt;
{{#if: {{{shape_constraints|}}} | {{#shapescenari: {{{shape_constraints}}} | {{{shape_roles|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
{{#switch: {{{tipologia|}}}&lt;br /&gt;
| Apertura = [[Categoria:Convenzioni di apertura]]&lt;br /&gt;
| Intervento = [[Categoria:Convenzioni di intervento]]&lt;br /&gt;
| Supporto = [[Categoria:Convenzioni di supporto]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{nome|}}} | {{DEFAULTSORT:{{{nome}}}}} }}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{{tag_cc|}}} | &amp;lt;span class=&amp;quot;bridgecc-tag-cc&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;{{{tag_cc|}}}&amp;lt;/span&amp;gt; }}&lt;br /&gt;
{{#if: {{{tag_sistema|}}} | &amp;lt;span class=&amp;quot;bridgecc-tag-sistema&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;{{{tag_sistema|}}}&amp;lt;/span&amp;gt; }}&lt;br /&gt;
{{BridgeRAG|tipo=convenzione}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Segnale_di_Smith&amp;diff=1984</id>
		<title>Segnale di Smith</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Segnale_di_Smith&amp;diff=1984"/>
		<updated>2026-10-21T18:49:41Z</updated>

		<summary type="html">&lt;p&gt;Lpala: shape_constraints: KT9 e QT9 con il 9 garantito&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Convenzione&lt;br /&gt;
|nome=Segnale di Smith&lt;br /&gt;
|tipologia=Segnale / difesa&lt;br /&gt;
|scopo=Dare al compagno, con la prima carta libera giocata contro un contratto a senza atout, un&#039;informazione sul gradimento del colore d&#039;attacco: una carta &amp;quot;inutilmente alta&amp;quot; dice che nel colore d&#039;attacco si ha più di quanto si è potuto mostrare (gradimento a scoppio ritardato), la carta più piccola dice che non si gradisce l&#039;attacco o che non si ha più di quanto già mostrato&lt;br /&gt;
|trigger=Esclusivamente contro contratti a senza atout (SA), riguarda solo la prima presa della smazzata. È a disposizione di entrambi i difensori (sia dell&#039;attaccante sia del terzo di mano): vale la prima carta libera giocata da un difensore dopo l&#039;attacco, quando l&#039;avversario muove un suo colore. È una convenzione di coppia che va concordata e poi giocata sempre&lt;br /&gt;
|risposte=Smith positiva (gradimento): prima carta libera &amp;quot;inutilmente alta&amp;quot; (non presumibilmente la più piccola) = nel colore d&#039;attacco ho più di quanto ho potuto mostrare. Smith negativa: prima carta libera la più piccola = non gradisco l&#039;attacco o non ho più di quanto già mostrato. Se alla prima mossa dell&#039;avversario il difensore è costretto a giocare una carta per economia di gioco, non può segnalare e la Smith slitta alla giocata successiva. Per l&#039;attaccante la Smith positiva dice che il colore è praticamente affrancato (tornare in quel colore), la negativa che è meglio cercare di sfondare altrove&lt;br /&gt;
|note=Si applica solo contro SA e non si protrae durante la smazzata. Positiva, negativa e di gradimento sono parti della stessa convenzione. Pericolo: dimenticarsene; se si è d&#039;accordo di giocarla va giocata sempre, senza fare economie sulla carta alta (con 854 per un gradimento si mette l&#039;8). Fonte: Marina Causa, Corso Preagonistica 2026&lt;br /&gt;
|tag_cc=signal_smith&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints = Attacco picche sequenza KJ10: opener S:5-6 S=KJT hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco picche sequenza KT9: opener S:5-6 S=KT9 hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco picche sequenza QT9: opener S:5-6 S=QT9 hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco picche K sotto onore: opener S:4-5 S=K hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco picche Q sotto onore: opener S:4-5 S=Q hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori sequenza KJ10: opener H:5-6 H=KJT hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori sequenza KT9: opener H:5-6 H=KT9 hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori sequenza QT9: opener H:5-6 H=QT9 hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori K sotto onore: opener H:4-5 H=K hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco cuori Q sotto onore: opener H:4-5 H=Q hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri sequenza KJ10: opener D:5-6 D=KJT hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri sequenza KT9: opener D:5-6 D=KT9 hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri sequenza QT9: opener D:5-6 D=QT9 hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri K sotto onore: opener D:4-5 D=K hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco quadri Q sotto onore: opener D:4-5 D=Q hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori sequenza KJ10: opener C:5-6 C=KJT hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori sequenza KT9: opener C:5-6 C=KT9 hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori sequenza QT9: opener C:5-6 C=QT9 hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori K sotto onore: opener C:4-5 C=K hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // // Attacco fiori Q sotto onore: opener C:4-5 C=Q hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17&lt;br /&gt;
&lt;br /&gt;
|cc_text_default=Segnale di Smith (prima carta libera contro SA)&lt;br /&gt;
|cc_text_default_en=Smith Signal (first free card against notrump)&lt;br /&gt;
|cc_text_signal_smith=Smith: carta alta alla prima carta libera = gradisce seme d&#039;attacco&lt;br /&gt;
|cc_text_signal_smith_en=Smith: high on first free card = likes opening lead suit&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;segnale di Smith&#039;&#039;&#039; è un segnale difensivo che si applica &#039;&#039;&#039;solo contro contratti a senza atout (SA)&#039;&#039;&#039; ed è a disposizione di entrambi i difensori. Dopo l&#039;attacco, la &#039;&#039;&#039;prima carta libera&#039;&#039;&#039; giocata da un difensore parla del &#039;&#039;&#039;gradimento del colore d&#039;attacco&#039;&#039;&#039;: se è &amp;quot;inutilmente alta&amp;quot;, quel difensore sta dicendo che nel colore d&#039;attacco &#039;&#039;&#039;ha più di quanto ha potuto mostrare&#039;&#039;&#039;. È un &amp;quot;gradimento a scoppio ritardato del colore di attacco&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Funzionamento ==&lt;br /&gt;
&lt;br /&gt;
Il segnale di Smith si applica esclusivamente contro SA:&lt;br /&gt;
&lt;br /&gt;
* Lo possono dare &#039;&#039;&#039;entrambi i difensori&#039;&#039;&#039;: sia l&#039;attaccante sia il terzo di mano.&lt;br /&gt;
* Vale la &#039;&#039;&#039;prima carta libera&#039;&#039;&#039; giocata da un difensore: alla prima occasione, quando l&#039;avversario muove un suo colore, il difensore che gioca inutilmente una carta alta (non presumibilmente la più piccola) segnala la Smith di gradimento; se gioca la più piccola mostra di non gradire l&#039;attacco (o di non avere più di quanto già mostrato).&lt;br /&gt;
* Il segnale riguarda il &#039;&#039;&#039;colore d&#039;attacco originale&#039;&#039;&#039; (non il colore su cui si gioca).&lt;br /&gt;
* Se nella prima mossa dell&#039;avversario un difensore è costretto a giocare una carta per economia di gioco, non può segnalare nulla e la Smith slitta alla giocata successiva.&lt;br /&gt;
* La Smith &#039;&#039;&#039;non si protrae durante la smazzata&#039;&#039;&#039;: riguarda solo la prima presa di un contratto a senza.&lt;br /&gt;
&lt;br /&gt;
=== Termini ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Carta libera&#039;&#039;&#039;: carta scelta liberamente, quando non si è impegnati a fare la presa o a giocare una carta precisa per economia di gioco.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;Più di quanto ha potuto mostrare&amp;quot;&#039;&#039;&#039;: ferma restando la grammatica della presa ben conosciuta (e che il terzo di mano sappia che carta giocare quando ha due o più carte equivalenti), significa possedere una carta importantissima per il compagno, né promessa né esclusa nella prima presa.&lt;br /&gt;
&lt;br /&gt;
=== Versioni ===&lt;br /&gt;
&lt;br /&gt;
La fonte descrive la Smith con la carta alta come gradimento. Nella versione precedente di questa pagina era citata anche una versione &amp;quot;rovescia&amp;quot; (carta bassa = gradimento, carta alta = nessun gradimento, indicata come più comune in agonistico): la fonte non la tratta e non ne descrive differenze, per cui non ha una pagina propria.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Versione !! Carta alta !! Carta bassa&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Standard (descritta nella fonte)&#039;&#039;&#039; || Gradimento per l&#039;attacco || Nessun gradimento&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rovescia&#039;&#039;&#039; (citata in precedenza, non nella fonte) || Nessun gradimento || Gradimento per l&#039;attacco&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Perché è utile ==&lt;br /&gt;
&lt;br /&gt;
Il segnale di Smith risolve un problema comune: l&#039;attaccante ha scelto un colore d&#039;attacco ma non sa se continuarlo, perché la sua carta (o quella del compagno) non basta a decidere. Il compagno può comunicare in ritardo il proprio gradimento per quel colore, anche quando l&#039;occasione non si presenta subito.&lt;br /&gt;
&lt;br /&gt;
Esempio motivante: contro 3SA si attacca il 2 di {{picche}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest e il morto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand position=&amp;quot;W&amp;quot;&amp;gt;A10862.Q42.K2.1063&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand position=&amp;quot;N&amp;quot;&amp;gt;97.A105.J10543.KJ2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest non sa se Est ha messo il fante da QJ o da J solo: basta essere d&#039;accordo e giocare la Smith.&lt;br /&gt;
&lt;br /&gt;
== La Smith dell&#039;attaccante ==&lt;br /&gt;
&lt;br /&gt;
Quando l&#039;attacco è ambiguo per il compagno, l&#039;attaccante può chiarire con la Smith.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Attacco di piccola&#039;&#039;&#039;: a volte da Qxxxx (e si vorrebbe che il compagno non perdesse tempo a ritornare), altre da AKxxx o AJxxxx (e se il compagno non ritorna è un infarto). Smith &#039;&#039;&#039;positiva&#039;&#039;&#039; (carta alta) quando il colore è praticamente affrancato; &#039;&#039;&#039;negativa&#039;&#039;&#039; quando si vuol comunicare che sarebbe meglio cercare di sfondare altrove. Esempi di figura (Ovest / Est / morto / Sud): Q9753 / J62 / 84 / AK10 (colore non pronto: cercare altrove); AQ953 / J62 / 84 / K107 (diverso).&lt;br /&gt;
* &#039;&#039;&#039;Attacco di fante o di 10&#039;&#039;&#039;: ambiguo (J108xx contro AJ10xx). Ovest AJ1083, Est 962, morto 74, Sud KQ5: Est deve sapere se Ovest ha 4 prese.&lt;br /&gt;
* &#039;&#039;&#039;Attacchi da doppio onore o anomali da forchetta&#039;&#039;&#039; (per esempio la Dama da AQJxx; oppure A Q 10 6 4 di {{fiori}} dopo che il giocante ha preso in mano con il fante e sappiamo che ha K J): si dice al compagno che deve assolutamente tornare in quel colore giocando una carta ALTA alla prima carta libera. Se si è deciso di regalare un Re per affrancare una lunga (per esempio A Q J 10 4 di {{fiori}}), alla prima occasione si fa una Smith inequivocabile per ordinare al compagno di tornare.&lt;br /&gt;
&lt;br /&gt;
== La Smith del terzo di mano ==&lt;br /&gt;
&lt;br /&gt;
Le situazioni sono ancora più ambigue per l&#039;attaccante. Il terzo di mano segnala tutte le volte che:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;ha impegnato il più basso di due onori contigui&#039;&#039;&#039;: Ovest A10753, morto 84, Est QJ2, Sud K96. Dopo 3, 4, J, K Ovest non sa cosa fare; Est deve segnalare la Dama: nella prossima presa farà Smith.&lt;br /&gt;
# &#039;&#039;&#039;ha filato con l&#039;asso per conservare il controllo su un onore del morto&#039;&#039;&#039;: Ovest J1093, morto K42, Est A86, Sud Q75. Dopo J, 2, 6, Q Ovest non ha la situazione chiara; Est alla prima occasione spiega che l&#039;attacco gli è piaciuto.&lt;br /&gt;
# &#039;&#039;&#039;ha impegnato la più alta di due carte non contigue&#039;&#039;&#039;: Ovest Q10532, morto 864, Est KJ7, Sud A9. Est DEVE giocare il Re e mai il fante; il fante che possiede è carta importantissima per Ovest; con la Smith Est dice &amp;quot;nel colore d&#039;attacco ho più di quanto mi hai visto&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;eccezionalmente&#039;&#039;&#039;, con un numero imprevedibilmente alto di carte nel colore, sapendo che il restante onore è in mano al giocante ma secco, per comunicare all&#039;attaccante la possibilità di incassarsi l&#039;asso: Ovest A952, morto QJ, Est 108763, Sud K4. Giocate 2, J, 8, 4, Est (presupponendo attacco da onore quarto) è quasi certo che Sud sia singolo: appena possibile fa Smith positiva, che Ovest interpreterà come grande lunghezza e quindi tirerà l&#039;asso.&lt;br /&gt;
&lt;br /&gt;
== Il pericolo della Smith ==&lt;br /&gt;
&lt;br /&gt;
Il pericolo è uno solo: dimenticarsene. Se si è d&#039;accordo di giocarla, bisogna giocarla &#039;&#039;&#039;sempre&#039;&#039;&#039;. Per esempio, attaccato da AKxxx, se sul primo colore mosso dal giocante vi scappa un due, il compagno non tornerà più nel colore (è quanto gli avete chiesto di fare). Non fate economie sulla carta alta: se dovete fare Smith di gradimento con 854 mettete l&#039;8.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
&lt;br /&gt;
Otto mani dalla dispensa. Contratto 3SA giocato da Sud; la licita è omessa (non leggibile nella fonte). La fonte indica le carte piccole con &amp;quot;x&amp;quot;: qui sono rese con carte basse scelte arbitrariamente per rispettare il formato, senza alcun significato; le carte indicate esplicitamente sono quelle della fonte.&lt;br /&gt;
&lt;br /&gt;
Per la generazione delle smazzate, nei vincoli le posizioni sono: `opener` = chi attacca, `responder` = il suo compagno, `opp1` = il morto, `opp2` = il dichiarante; i tipi di attacco (sequenza interrotta KJ10, interna KT9, QT9, sotto onore K o Q) sono un&#039;indicazione della redazione di BridgePedia, non tratti dalla dispensa.&lt;br /&gt;
&lt;br /&gt;
=== Mano 1 (attacco 2{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: AK105.AQ102.J103.J2&lt;br /&gt;
E: J9432.J43.A4.AQ3&lt;br /&gt;
S: 76.K5.KQ9765.654&lt;br /&gt;
W: Q8.9876.82.K10987&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Piccola dal morto, Dama di Ovest, asso di Nord; fante di {{quadri}} di Nord, Est liscia, Ovest fornisce il 2 e poi l&#039;8: è una Smith negativa (non ha nulla a {{picche}} oltre l&#039;onore già giocato). Est ricostruisce dall&#039;apertura di 1SA la mano di Nord.&lt;br /&gt;
&lt;br /&gt;
=== Mano 2 (attacco 3{{fiori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 10982.K432.A2.1032&lt;br /&gt;
E: AQ3.J105.Q1043.AKJ&lt;br /&gt;
S: KJ54.76.65.Q9654&lt;br /&gt;
W: 76.AQ98.KJ987.87&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud sa che Est ci prende ancora due volte e che il down va cercato altrove; per dissuadere Nord dal tornare a {{fiori}} fornisce la sua carta più piccola a {{quadri}} o a {{cuori}} a seconda del colore che muoverà Est. Nord prova con successo a sfondare a {{picche}}.&lt;br /&gt;
&lt;br /&gt;
=== Mano 3 (attacco piccola di {{cuori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 432.432.AQ32.AKQ&lt;br /&gt;
E: AJ105.105.J104.8654&lt;br /&gt;
S: KQ76.KQ6.K976.J10&lt;br /&gt;
W: 98.AJ987.85.9732&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest deve fornire la più grossa carta possibile per impedire che Sud (che muove {{picche}}) si trasferisca al morto; Est non deve precipitarsi a prendere.&lt;br /&gt;
&lt;br /&gt;
=== Mano 4 (attacco piccola di {{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: KJ932.KJ2.432.32&lt;br /&gt;
E: 54.43.AJ1065.KJ54&lt;br /&gt;
S: 106.A8765.K7.876&lt;br /&gt;
W: AQ7.Q109.Q98.AQ109&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord, dopo la prima presa, fa Smith negativa: non ha altro oltre quanto detto con l&#039;attacco di piccola; il ritorno a {{cuori}} batte. Con A J di {{picche}} (variante della mano) Nord farebbe Smith positiva: &amp;quot;se torni a {{picche}} sono tutte mie&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte la mano di Sud risulta di 12 carte (le {{picche}} sono 12 in totale invece di 13); è riportata come trascritta, senza correzione.&lt;br /&gt;
&lt;br /&gt;
=== Mano 5 (attacco 6{{cuori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 432.432.J2.AKJ109&lt;br /&gt;
E: KJ5.K10975.A43.74&lt;br /&gt;
S: AQ76.AJ.KQ65.Q63&lt;br /&gt;
W: 1098.Q86.10987.852&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest deve far capire a Est che le {{cuori}} sono tutt&#039;altro (Smith negativa). Sud cerca la nona presa giocando {{fiori}} al morto e il fante di {{quadri}}; Est non deve dormire: precipitarsi con l&#039;asso e tornare {{cuori}}.&lt;br /&gt;
&lt;br /&gt;
=== Mano 6 (attacco 3{{quadri}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: K432.J102.104.AQ32&lt;br /&gt;
E: Q1065.95.KJ9.J1094&lt;br /&gt;
S: A87.AQ43.A82.K65&lt;br /&gt;
W: J9.K876.Q7653.87&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Re di {{quadri}} di Est, asso di Sud; Est segnala il fante di {{quadri}} con Smith positiva (&amp;quot;nel colore d&#039;attacco ho più di quanto mi hai visto&amp;quot;). Ovest, in presa a {{cuori}}, segue con la piccola di {{quadri}} e deve fidarsi: se incassa la Dama blocca il colore e regala 3SA.&lt;br /&gt;
&lt;br /&gt;
=== Mano 7 (attacco 2{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 65.96.AJ1054.Q653&lt;br /&gt;
E: 1084.A8732.K8.984&lt;br /&gt;
S: AQ7.Q104.Q76.AKJ10&lt;br /&gt;
W: KJ932.KJ5.932.72&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest attacca il 2 di {{picche}} e vede il 10 e la Dama di Sud; Est deve fare Smith negativa lasciando che Est scelga liberamente (la Smith negativa dell&#039;attaccante non significa &amp;quot;non voglio che torni&amp;quot;: lascia aperte le altre strade; la positiva vincola al colore iniziale).&lt;br /&gt;
&lt;br /&gt;
Nota: il testo della fonte presenta una svista nei ruoli Est/Ovest (la frase &amp;quot;Est deve fare Smith negativa lasciando che Est scelga&amp;quot; è riportata fedelmente).&lt;br /&gt;
&lt;br /&gt;
=== Mano 8 (attacco 6{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 842.652.KJ96.QJ10&lt;br /&gt;
E: AK1093.1093.872.82&lt;br /&gt;
S: QJ7.AQ.AQ105.A976&lt;br /&gt;
W: 65.KJ874.43.K543&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Est deve lisciare il primo giro (senza ingressi); Sud prende e si trasferisce al morto a {{quadri}} (impasse a {{fiori}}). Ovest deve stare attento alla {{quadri}} giocata da Est: si deve dare l&#039;8, che ribadisce le {{picche}}.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte non descrive varianti del segnale di Smith: Smith positiva, negativa e di gradimento sono parti della stessa convenzione. Una versione &amp;quot;rovescia&amp;quot; era citata nella precedente versione della pagina, ma non risulta nella fonte e non ha pagina propria.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Gradimento_naturale|Gradimento naturale]]&lt;br /&gt;
* [[Gradimento_rovescio|Gradimento rovescio]]&lt;br /&gt;
* [[Segnale_di_conteggio|Segnale di conteggio]]&lt;br /&gt;
* [[Segnale_di_preferenza|Segnale di preferenza]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;02. La &#039;Smith&#039;: un aiuto nel controgioco a Senza&amp;quot; (PDF, 6 pagine).&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Difesa]]&lt;br /&gt;
[[Categoria:Segnali difensivi]]&lt;br /&gt;
[[Categoria:Gioco a senza atout]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Segnale_di_Smith&amp;diff=1983</id>
		<title>Segnale di Smith</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Segnale_di_Smith&amp;diff=1983"/>
		<updated>2026-10-21T18:48:29Z</updated>

		<summary type="html">&lt;p&gt;Lpala: shape_constraints: attacchi da sequenza interrotta/sotto onore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Convenzione&lt;br /&gt;
|nome=Segnale di Smith&lt;br /&gt;
|tipologia=Segnale / difesa&lt;br /&gt;
|scopo=Dare al compagno, con la prima carta libera giocata contro un contratto a senza atout, un&#039;informazione sul gradimento del colore d&#039;attacco: una carta &amp;quot;inutilmente alta&amp;quot; dice che nel colore d&#039;attacco si ha più di quanto si è potuto mostrare (gradimento a scoppio ritardato), la carta più piccola dice che non si gradisce l&#039;attacco o che non si ha più di quanto già mostrato&lt;br /&gt;
|trigger=Esclusivamente contro contratti a senza atout (SA), riguarda solo la prima presa della smazzata. È a disposizione di entrambi i difensori (sia dell&#039;attaccante sia del terzo di mano): vale la prima carta libera giocata da un difensore dopo l&#039;attacco, quando l&#039;avversario muove un suo colore. È una convenzione di coppia che va concordata e poi giocata sempre&lt;br /&gt;
|risposte=Smith positiva (gradimento): prima carta libera &amp;quot;inutilmente alta&amp;quot; (non presumibilmente la più piccola) = nel colore d&#039;attacco ho più di quanto ho potuto mostrare. Smith negativa: prima carta libera la più piccola = non gradisco l&#039;attacco o non ho più di quanto già mostrato. Se alla prima mossa dell&#039;avversario il difensore è costretto a giocare una carta per economia di gioco, non può segnalare e la Smith slitta alla giocata successiva. Per l&#039;attaccante la Smith positiva dice che il colore è praticamente affrancato (tornare in quel colore), la negativa che è meglio cercare di sfondare altrove&lt;br /&gt;
|note=Si applica solo contro SA e non si protrae durante la smazzata. Positiva, negativa e di gradimento sono parti della stessa convenzione. Pericolo: dimenticarsene; se si è d&#039;accordo di giocarla va giocata sempre, senza fare economie sulla carta alta (con 854 per un gradimento si mette l&#039;8). Fonte: Marina Causa, Corso Preagonistica 2026&lt;br /&gt;
|tag_cc=signal_smith&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints = Attacco picche sequenza KJ10: opener S:5-6 S=KJT hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco picche sequenza KT9: opener S:5-6 S=KT hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco picche sequenza QT9: opener S:5-6 S=QT hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco picche K sotto onore: opener S:4-5 S=K hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco picche Q sotto onore: opener S:4-5 S=Q hcp:6-9; responder S:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco cuori sequenza KJ10: opener H:5-6 H=KJT hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco cuori sequenza KT9: opener H:5-6 H=KT hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco cuori sequenza QT9: opener H:5-6 H=QT hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco cuori K sotto onore: opener H:4-5 H=K hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco cuori Q sotto onore: opener H:4-5 H=Q hcp:6-9; responder H:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco quadri sequenza KJ10: opener D:5-6 D=KJT hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco quadri sequenza KT9: opener D:5-6 D=KT hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco quadri sequenza QT9: opener D:5-6 D=QT hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco quadri K sotto onore: opener D:4-5 D=K hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco quadri Q sotto onore: opener D:4-5 D=Q hcp:6-9; responder D:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco fiori sequenza KJ10: opener C:5-6 C=KJT hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco fiori sequenza KT9: opener C:5-6 C=KT hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco fiori sequenza QT9: opener C:5-6 C=QT hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco fiori K sotto onore: opener C:4-5 C=K hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17 // Attacco fiori Q sotto onore: opener C:4-5 C=Q hcp:6-9; responder C:2-4 hcp:2-7; opp1 hcp:10-14; opp2 shape:balanced hcp:15-17&lt;br /&gt;
&lt;br /&gt;
|cc_text_default=Segnale di Smith (prima carta libera contro SA)&lt;br /&gt;
|cc_text_default_en=Smith Signal (first free card against notrump)&lt;br /&gt;
|cc_text_signal_smith=Smith: carta alta alla prima carta libera = gradisce seme d&#039;attacco&lt;br /&gt;
|cc_text_signal_smith_en=Smith: high on first free card = likes opening lead suit&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;segnale di Smith&#039;&#039;&#039; è un segnale difensivo che si applica &#039;&#039;&#039;solo contro contratti a senza atout (SA)&#039;&#039;&#039; ed è a disposizione di entrambi i difensori. Dopo l&#039;attacco, la &#039;&#039;&#039;prima carta libera&#039;&#039;&#039; giocata da un difensore parla del &#039;&#039;&#039;gradimento del colore d&#039;attacco&#039;&#039;&#039;: se è &amp;quot;inutilmente alta&amp;quot;, quel difensore sta dicendo che nel colore d&#039;attacco &#039;&#039;&#039;ha più di quanto ha potuto mostrare&#039;&#039;&#039;. È un &amp;quot;gradimento a scoppio ritardato del colore di attacco&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Funzionamento ==&lt;br /&gt;
&lt;br /&gt;
Il segnale di Smith si applica esclusivamente contro SA:&lt;br /&gt;
&lt;br /&gt;
* Lo possono dare &#039;&#039;&#039;entrambi i difensori&#039;&#039;&#039;: sia l&#039;attaccante sia il terzo di mano.&lt;br /&gt;
* Vale la &#039;&#039;&#039;prima carta libera&#039;&#039;&#039; giocata da un difensore: alla prima occasione, quando l&#039;avversario muove un suo colore, il difensore che gioca inutilmente una carta alta (non presumibilmente la più piccola) segnala la Smith di gradimento; se gioca la più piccola mostra di non gradire l&#039;attacco (o di non avere più di quanto già mostrato).&lt;br /&gt;
* Il segnale riguarda il &#039;&#039;&#039;colore d&#039;attacco originale&#039;&#039;&#039; (non il colore su cui si gioca).&lt;br /&gt;
* Se nella prima mossa dell&#039;avversario un difensore è costretto a giocare una carta per economia di gioco, non può segnalare nulla e la Smith slitta alla giocata successiva.&lt;br /&gt;
* La Smith &#039;&#039;&#039;non si protrae durante la smazzata&#039;&#039;&#039;: riguarda solo la prima presa di un contratto a senza.&lt;br /&gt;
&lt;br /&gt;
=== Termini ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Carta libera&#039;&#039;&#039;: carta scelta liberamente, quando non si è impegnati a fare la presa o a giocare una carta precisa per economia di gioco.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;Più di quanto ha potuto mostrare&amp;quot;&#039;&#039;&#039;: ferma restando la grammatica della presa ben conosciuta (e che il terzo di mano sappia che carta giocare quando ha due o più carte equivalenti), significa possedere una carta importantissima per il compagno, né promessa né esclusa nella prima presa.&lt;br /&gt;
&lt;br /&gt;
=== Versioni ===&lt;br /&gt;
&lt;br /&gt;
La fonte descrive la Smith con la carta alta come gradimento. Nella versione precedente di questa pagina era citata anche una versione &amp;quot;rovescia&amp;quot; (carta bassa = gradimento, carta alta = nessun gradimento, indicata come più comune in agonistico): la fonte non la tratta e non ne descrive differenze, per cui non ha una pagina propria.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Versione !! Carta alta !! Carta bassa&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Standard (descritta nella fonte)&#039;&#039;&#039; || Gradimento per l&#039;attacco || Nessun gradimento&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rovescia&#039;&#039;&#039; (citata in precedenza, non nella fonte) || Nessun gradimento || Gradimento per l&#039;attacco&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Perché è utile ==&lt;br /&gt;
&lt;br /&gt;
Il segnale di Smith risolve un problema comune: l&#039;attaccante ha scelto un colore d&#039;attacco ma non sa se continuarlo, perché la sua carta (o quella del compagno) non basta a decidere. Il compagno può comunicare in ritardo il proprio gradimento per quel colore, anche quando l&#039;occasione non si presenta subito.&lt;br /&gt;
&lt;br /&gt;
Esempio motivante: contro 3SA si attacca il 2 di {{picche}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding dealer=&amp;quot;S&amp;quot;&amp;gt;1SA P 3SA P P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest e il morto:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand position=&amp;quot;W&amp;quot;&amp;gt;A10862.Q42.K2.1063&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand position=&amp;quot;N&amp;quot;&amp;gt;97.A105.J10543.KJ2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest non sa se Est ha messo il fante da QJ o da J solo: basta essere d&#039;accordo e giocare la Smith.&lt;br /&gt;
&lt;br /&gt;
== La Smith dell&#039;attaccante ==&lt;br /&gt;
&lt;br /&gt;
Quando l&#039;attacco è ambiguo per il compagno, l&#039;attaccante può chiarire con la Smith.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Attacco di piccola&#039;&#039;&#039;: a volte da Qxxxx (e si vorrebbe che il compagno non perdesse tempo a ritornare), altre da AKxxx o AJxxxx (e se il compagno non ritorna è un infarto). Smith &#039;&#039;&#039;positiva&#039;&#039;&#039; (carta alta) quando il colore è praticamente affrancato; &#039;&#039;&#039;negativa&#039;&#039;&#039; quando si vuol comunicare che sarebbe meglio cercare di sfondare altrove. Esempi di figura (Ovest / Est / morto / Sud): Q9753 / J62 / 84 / AK10 (colore non pronto: cercare altrove); AQ953 / J62 / 84 / K107 (diverso).&lt;br /&gt;
* &#039;&#039;&#039;Attacco di fante o di 10&#039;&#039;&#039;: ambiguo (J108xx contro AJ10xx). Ovest AJ1083, Est 962, morto 74, Sud KQ5: Est deve sapere se Ovest ha 4 prese.&lt;br /&gt;
* &#039;&#039;&#039;Attacchi da doppio onore o anomali da forchetta&#039;&#039;&#039; (per esempio la Dama da AQJxx; oppure A Q 10 6 4 di {{fiori}} dopo che il giocante ha preso in mano con il fante e sappiamo che ha K J): si dice al compagno che deve assolutamente tornare in quel colore giocando una carta ALTA alla prima carta libera. Se si è deciso di regalare un Re per affrancare una lunga (per esempio A Q J 10 4 di {{fiori}}), alla prima occasione si fa una Smith inequivocabile per ordinare al compagno di tornare.&lt;br /&gt;
&lt;br /&gt;
== La Smith del terzo di mano ==&lt;br /&gt;
&lt;br /&gt;
Le situazioni sono ancora più ambigue per l&#039;attaccante. Il terzo di mano segnala tutte le volte che:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;ha impegnato il più basso di due onori contigui&#039;&#039;&#039;: Ovest A10753, morto 84, Est QJ2, Sud K96. Dopo 3, 4, J, K Ovest non sa cosa fare; Est deve segnalare la Dama: nella prossima presa farà Smith.&lt;br /&gt;
# &#039;&#039;&#039;ha filato con l&#039;asso per conservare il controllo su un onore del morto&#039;&#039;&#039;: Ovest J1093, morto K42, Est A86, Sud Q75. Dopo J, 2, 6, Q Ovest non ha la situazione chiara; Est alla prima occasione spiega che l&#039;attacco gli è piaciuto.&lt;br /&gt;
# &#039;&#039;&#039;ha impegnato la più alta di due carte non contigue&#039;&#039;&#039;: Ovest Q10532, morto 864, Est KJ7, Sud A9. Est DEVE giocare il Re e mai il fante; il fante che possiede è carta importantissima per Ovest; con la Smith Est dice &amp;quot;nel colore d&#039;attacco ho più di quanto mi hai visto&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;eccezionalmente&#039;&#039;&#039;, con un numero imprevedibilmente alto di carte nel colore, sapendo che il restante onore è in mano al giocante ma secco, per comunicare all&#039;attaccante la possibilità di incassarsi l&#039;asso: Ovest A952, morto QJ, Est 108763, Sud K4. Giocate 2, J, 8, 4, Est (presupponendo attacco da onore quarto) è quasi certo che Sud sia singolo: appena possibile fa Smith positiva, che Ovest interpreterà come grande lunghezza e quindi tirerà l&#039;asso.&lt;br /&gt;
&lt;br /&gt;
== Il pericolo della Smith ==&lt;br /&gt;
&lt;br /&gt;
Il pericolo è uno solo: dimenticarsene. Se si è d&#039;accordo di giocarla, bisogna giocarla &#039;&#039;&#039;sempre&#039;&#039;&#039;. Per esempio, attaccato da AKxxx, se sul primo colore mosso dal giocante vi scappa un due, il compagno non tornerà più nel colore (è quanto gli avete chiesto di fare). Non fate economie sulla carta alta: se dovete fare Smith di gradimento con 854 mettete l&#039;8.&lt;br /&gt;
&lt;br /&gt;
== Esempi ==&lt;br /&gt;
&lt;br /&gt;
Otto mani dalla dispensa. Contratto 3SA giocato da Sud; la licita è omessa (non leggibile nella fonte). La fonte indica le carte piccole con &amp;quot;x&amp;quot;: qui sono rese con carte basse scelte arbitrariamente per rispettare il formato, senza alcun significato; le carte indicate esplicitamente sono quelle della fonte.&lt;br /&gt;
&lt;br /&gt;
Per la generazione delle smazzate, nei vincoli le posizioni sono: `opener` = chi attacca, `responder` = il suo compagno, `opp1` = il morto, `opp2` = il dichiarante; i tipi di attacco (sequenza interrotta KJ10, interna KT9, QT9, sotto onore K o Q) sono un&#039;indicazione della redazione di BridgePedia, non tratti dalla dispensa.&lt;br /&gt;
&lt;br /&gt;
=== Mano 1 (attacco 2{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: AK105.AQ102.J103.J2&lt;br /&gt;
E: J9432.J43.A4.AQ3&lt;br /&gt;
S: 76.K5.KQ9765.654&lt;br /&gt;
W: Q8.9876.82.K10987&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Piccola dal morto, Dama di Ovest, asso di Nord; fante di {{quadri}} di Nord, Est liscia, Ovest fornisce il 2 e poi l&#039;8: è una Smith negativa (non ha nulla a {{picche}} oltre l&#039;onore già giocato). Est ricostruisce dall&#039;apertura di 1SA la mano di Nord.&lt;br /&gt;
&lt;br /&gt;
=== Mano 2 (attacco 3{{fiori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 10982.K432.A2.1032&lt;br /&gt;
E: AQ3.J105.Q1043.AKJ&lt;br /&gt;
S: KJ54.76.65.Q9654&lt;br /&gt;
W: 76.AQ98.KJ987.87&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud sa che Est ci prende ancora due volte e che il down va cercato altrove; per dissuadere Nord dal tornare a {{fiori}} fornisce la sua carta più piccola a {{quadri}} o a {{cuori}} a seconda del colore che muoverà Est. Nord prova con successo a sfondare a {{picche}}.&lt;br /&gt;
&lt;br /&gt;
=== Mano 3 (attacco piccola di {{cuori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 432.432.AQ32.AKQ&lt;br /&gt;
E: AJ105.105.J104.8654&lt;br /&gt;
S: KQ76.KQ6.K976.J10&lt;br /&gt;
W: 98.AJ987.85.9732&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest deve fornire la più grossa carta possibile per impedire che Sud (che muove {{picche}}) si trasferisca al morto; Est non deve precipitarsi a prendere.&lt;br /&gt;
&lt;br /&gt;
=== Mano 4 (attacco piccola di {{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: KJ932.KJ2.432.32&lt;br /&gt;
E: 54.43.AJ1065.KJ54&lt;br /&gt;
S: 106.A8765.K7.876&lt;br /&gt;
W: AQ7.Q109.Q98.AQ109&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord, dopo la prima presa, fa Smith negativa: non ha altro oltre quanto detto con l&#039;attacco di piccola; il ritorno a {{cuori}} batte. Con A J di {{picche}} (variante della mano) Nord farebbe Smith positiva: &amp;quot;se torni a {{picche}} sono tutte mie&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte la mano di Sud risulta di 12 carte (le {{picche}} sono 12 in totale invece di 13); è riportata come trascritta, senza correzione.&lt;br /&gt;
&lt;br /&gt;
=== Mano 5 (attacco 6{{cuori}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 432.432.J2.AKJ109&lt;br /&gt;
E: KJ5.K10975.A43.74&lt;br /&gt;
S: AQ76.AJ.KQ65.Q63&lt;br /&gt;
W: 1098.Q86.10987.852&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest deve far capire a Est che le {{cuori}} sono tutt&#039;altro (Smith negativa). Sud cerca la nona presa giocando {{fiori}} al morto e il fante di {{quadri}}; Est non deve dormire: precipitarsi con l&#039;asso e tornare {{cuori}}.&lt;br /&gt;
&lt;br /&gt;
=== Mano 6 (attacco 3{{quadri}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: K432.J102.104.AQ32&lt;br /&gt;
E: Q1065.95.KJ9.J1094&lt;br /&gt;
S: A87.AQ43.A82.K65&lt;br /&gt;
W: J9.K876.Q7653.87&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Re di {{quadri}} di Est, asso di Sud; Est segnala il fante di {{quadri}} con Smith positiva (&amp;quot;nel colore d&#039;attacco ho più di quanto mi hai visto&amp;quot;). Ovest, in presa a {{cuori}}, segue con la piccola di {{quadri}} e deve fidarsi: se incassa la Dama blocca il colore e regala 3SA.&lt;br /&gt;
&lt;br /&gt;
=== Mano 7 (attacco 2{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 65.96.AJ1054.Q653&lt;br /&gt;
E: 1084.A8732.K8.984&lt;br /&gt;
S: AQ7.Q104.Q76.AKJ10&lt;br /&gt;
W: KJ932.KJ5.932.72&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovest attacca il 2 di {{picche}} e vede il 10 e la Dama di Sud; Est deve fare Smith negativa lasciando che Est scelga liberamente (la Smith negativa dell&#039;attaccante non significa &amp;quot;non voglio che torni&amp;quot;: lascia aperte le altre strade; la positiva vincola al colore iniziale).&lt;br /&gt;
&lt;br /&gt;
Nota: il testo della fonte presenta una svista nei ruoli Est/Ovest (la frase &amp;quot;Est deve fare Smith negativa lasciando che Est scelga&amp;quot; è riportata fedelmente).&lt;br /&gt;
&lt;br /&gt;
=== Mano 8 (attacco 6{{picche}}) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deal&amp;gt;&lt;br /&gt;
N: 842.652.KJ96.QJ10&lt;br /&gt;
E: AK1093.1093.872.82&lt;br /&gt;
S: QJ7.AQ.AQ105.A976&lt;br /&gt;
W: 65.KJ874.43.K543&lt;br /&gt;
&amp;lt;/deal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Est deve lisciare il primo giro (senza ingressi); Sud prende e si trasferisce al morto a {{quadri}} (impasse a {{fiori}}). Ovest deve stare attento alla {{quadri}} giocata da Est: si deve dare l&#039;8, che ribadisce le {{picche}}.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte non descrive varianti del segnale di Smith: Smith positiva, negativa e di gradimento sono parti della stessa convenzione. Una versione &amp;quot;rovescia&amp;quot; era citata nella precedente versione della pagina, ma non risulta nella fonte e non ha pagina propria.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Gradimento_naturale|Gradimento naturale]]&lt;br /&gt;
* [[Gradimento_rovescio|Gradimento rovescio]]&lt;br /&gt;
* [[Segnale_di_conteggio|Segnale di conteggio]]&lt;br /&gt;
* [[Segnale_di_preferenza|Segnale di preferenza]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;02. La &#039;Smith&#039;: un aiuto nel controgioco a Senza&amp;quot; (PDF, 6 pagine).&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Difesa]]&lt;br /&gt;
[[Categoria:Segnali difensivi]]&lt;br /&gt;
[[Categoria:Gioco a senza atout]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Multirever&amp;diff=1982</id>
		<title>Multirever</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Multirever&amp;diff=1982"/>
		<updated>2026-10-20T21:32:03Z</updated>

		<summary type="html">&lt;p&gt;Lpala: shape_constraints: rispondente 5-13 punti&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Multirever}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di sviluppo]]&lt;br /&gt;
[[Categoria:Convenzioni di licita]]&lt;br /&gt;
&lt;br /&gt;
= Multirever =&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Multirever (Primo Rever Disponibile, PRD)&lt;br /&gt;
|tipologia=Sviluppo / Rever dell&#039;apertore (rever ambiguo, forzante)&lt;br /&gt;
|scopo=Dopo apertura in un minore e risposta di 1 a colore, dare un significato convenzionale al primo rever a colore nuovo disponibile dell&#039;apertore: una dichiarazione forzante e ambigua sulla tipologia della mano (sempre mano forte), chiarita dal rispondente con un relè e dalla successiva descrizione dell&#039;apertore&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} o 1{{quadri}}, risposta di uno a colore, nessun intervento avversario; la più economica tra le dichiarazioni di livello due a colore nuovo che rappresentino un rever. Le sequenze sono cinque: 1{{fiori}} 1{{quadri}} 2{{cuori}}; 1{{fiori}} 1{{cuori}} 2{{quadri}}; 1{{fiori}} 1{{picche}} 2{{quadri}}; 1{{quadri}} 1{{cuori}} 2{{picche}}; 1{{quadri}} 1{{picche}} 2{{cuori}}&lt;br /&gt;
|risposte=Il rispondente non passa mai (il secondo colore potrebbe essere vuoto). Tre repliche deboli: riporto nel minore di apertura (scoraggiantissima), ripetizione del proprio colore (scoraggiante), sign-off nel secondo colore dichiarato dall&#039;apertore (la meno economica tra senza atout e quarto colore). Una replica forzante: il relè, la più economica tra senza atout e quarto colore (7+ punti, tendenzialmente forzante a manche). Sul relè l&#039;apertore si descrive: primo gradino libero = rever reale 5/4; ripetizione del minore di apertura = monocolore minore; ripetizione del secondo colore = rever 6-4; appoggio a tre nel colore del rispondente = mano sbilanciata di 18-20 con fit quarto (Gran Rever)&lt;br /&gt;
|note=Ideatore non indicato nella fonte; descrizione secondo la trattazione di Marina Causa. Forzante senza eccezioni: l&#039;apertore può anche non avere il secondo colore, ma ha sempre almeno 5 carte nel minore di apertura. Non è convenzionale ogni rever dell&#039;apertore, solo il primo rever possibile; non vale su risposta di 1SA. Nessun intervento avversario. Non sono note varianti nella fonte&lt;br /&gt;
|tag_cc=rebid_rever&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints = 1C-1D-2H mono: opener C:6-7 S:0-3 H:0-3 D:0-3 hcp:18-21; responder S:0-5 H:0-3 D:4-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1D-2H RR 5/4: opener C:5 H:4 S:0-3 D:0-3 hcp:16-21; responder S:0-5 H:0-3 D:4-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1D-2H RR 6/4: opener C:6-7 H:4 S:0-3 D:0-3 hcp:16-21; responder S:0-5 H:0-3 D:4-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1D-2H Gran rever: fit:D8+ opener C:5-6 D:4 H:0-1 hcp:18-20; responder S:0-5 H:0-3 D:4-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1H-2D mono: opener C:6-7 S:0-3 H:0-3 D:0-3 hcp:18-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1H-2D RR 5/4: opener C:5 D:4 S:0-3 H:0-3 hcp:16-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1H-2D RR 6/4: opener C:6-7 D:4 S:0-3 H:0-3 hcp:16-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1H-2D Gran rever: fit:H8+ opener C:5-6 H:4 D:0-1 hcp:18-20; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1S-2D mono: opener C:6-7 S:0-3 H:0-3 D:0-3 hcp:18-21; responder S:4-5 H:0-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1S-2D RR 5/4: opener C:5 D:4 S:0-3 H:0-3 hcp:16-21; responder S:4-5 H:0-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1S-2D RR 6/4: opener C:6-7 D:4 S:0-3 H:0-3 hcp:16-21; responder S:4-5 H:0-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1C-1S-2D Gran rever: fit:S8+ opener C:5-6 S:4 D:0-1 hcp:18-20; responder S:4-5 H:0-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1D-1H-2S mono: opener D:6-7 S:0-3 H:0-3 C:0-3 hcp:18-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1D-1H-2S RR 5/4: opener D:5 S:4 H:0-3 C:0-3 hcp:16-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1D-1H-2S RR 6/4: opener D:6-7 S:4 H:0-3 C:0-3 hcp:16-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1D-1H-2S Gran rever: fit:H8+ opener D:5-6 H:4 S:0-1 hcp:18-20; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1D-1S-2H mono: opener D:6-7 S:0-3 H:0-3 C:0-3 hcp:18-21; responder S:4-5 H:0-3 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1D-1S-2H RR 5/4: opener D:5 H:4 S:0-3 C:0-3 hcp:16-21; responder S:4-5 H:0-3 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1D-1S-2H RR 6/4: opener D:6-7 H:4 S:0-3 C:0-3 hcp:16-21; responder S:4-5 H:0-3 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet // 1D-1S-2H Gran rever: fit:S8+ opener D:5-6 S:4 H:0-1 hcp:18-20; responder S:4-5 H:0-3 D:0-5 C:0-5 hcp:5-13; opp1 quiet; opp2 quiet&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;Multirever&#039;&#039;&#039;, detto anche &#039;&#039;&#039;Primo Rever Disponibile (PRD)&#039;&#039;&#039;, è un rever &#039;&#039;ambiguo&#039;&#039; dell&#039;apertore che segue un&#039;apertura in un colore minore e una risposta di 1 a colore. Questa pagina riporta la trattazione di Marina Causa (vedi [[#Fonti|Fonti]]); l&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;br /&gt;
&lt;br /&gt;
== Idea ==&lt;br /&gt;
&lt;br /&gt;
Secondo la trattazione di Marina Causa, l&#039;ambiguità del Multirever non riguarda la forza (è sempre una mano forte) ma la &#039;&#039;&#039;tipologia della mano&#039;&#039;&#039;. La dichiarazione, per esempio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
non dice in modo univoco &amp;quot;ho una bicolore quadri-cuori di rovescio&amp;quot;: il colore espresso è solo una delle possibilità. È un rever &amp;quot;Multicolor&amp;quot; la cui fisionomia si chiarisce dopo. È &#039;&#039;&#039;tassativamente forzante&#039;&#039;&#039;: l&#039;apertore potrebbe non avere affatto il secondo colore, ma ha sempre almeno 5 carte nel primo.&lt;br /&gt;
&lt;br /&gt;
=== Lo spunto ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: nelle trascrizioni della fonte le cartine indicate con &amp;quot;x&amp;quot; sono state sostituite da carte basse non duplicate, perché il parser delle mani non accetta le &amp;quot;x&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Con questa mano (3 picche, 1 cuori, 3 quadri, 6 fiori) un buon naturalista apre di 1{{fiori}} e, se il compagno risponde 1 in un nobile, dichiara 2{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.KQ3.AKJ765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I motivi sono tre:&lt;br /&gt;
&lt;br /&gt;
* è l&#039;unico modo per tenere aperta la dichiarazione (un rever a colore nuovo è forzante anche nel liscione);&lt;br /&gt;
&lt;br /&gt;
* si evita di rischiare il passo e di mortificare la mano con il salto 1{{fiori}} - 3{{fiori}} (&amp;quot;uno poi tre&amp;quot; rappresenta piccoli rever di 15/17 punti);&lt;br /&gt;
&lt;br /&gt;
* il compagno, anche se dovesse preferire le quadri, sarà portato a rispettare le pressioni della mano forte, tanto più trattandosi di colori entrambi minori.&lt;br /&gt;
&lt;br /&gt;
Le quadri sono terze e il compagno non lo sa, ma poco importa, tanto è forzante. Allora &amp;quot;tanto vale codificarlo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Presupposti: quale rever è convenzionale ==&lt;br /&gt;
&lt;br /&gt;
Condizioni: apertura in un minore; risposta uno su uno a colore; nessun intervento avversario; la dichiarazione è il più economico dei possibili rever a colore nuovo. Non tutti i rever dell&#039;apertore sono convenzionali: lo è solo &amp;quot;il primo rever possibile&amp;quot;, cioè la più bassa dichiarazione di livello due che rappresenti un rever.&lt;br /&gt;
&lt;br /&gt;
Le sequenze convenzionali sono esattamente cinque (tre con partenza fiori, due con quadri):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restano rever &amp;quot;normali&amp;quot; (nulla cambia rispetto a prima) le sequenze seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è il primo rever possibile: il primo sarebbe 2{{cuori}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è una dichiarazione a colore nuovo (è un appoggio).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1NT P 2D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La convenzione non funziona su risposta di 1SA.&lt;br /&gt;
&lt;br /&gt;
== Quali mani ==&lt;br /&gt;
&lt;br /&gt;
Per cominciare, solo quattro possibilità:&lt;br /&gt;
&lt;br /&gt;
# la monocolore minore di 18/20 punti (che attualmente non ha collocazione);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever 5/4 (il Rever Reale, RR);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever ma distribuzione 6/4;&lt;br /&gt;
&lt;br /&gt;
# la mano sbilanciata di Gran Rever con fit quarto nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Il rispondente, per chiedere, usa come relè interrogativo la prima dichiarazione possibile che non corrisponda né alla ripetizione del seme di risposta né al riporto nel minore di apertura.&lt;br /&gt;
&lt;br /&gt;
Esempi di mani dell&#039;apertore nella sequenza&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* monocolore di quadri forte, più di &amp;quot;uno poi tre&amp;quot; ma non abbastanza per 2{{fiori}}; punteggio promesso 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AQ54.KQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale 5/4, punteggio 16-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.KQ54.AQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale con distribuzione 6/4 (&amp;quot;un asso in più&amp;quot;), punteggio 16-21: la fonte riporta ♠Kx ♥KJxx ♦AKQxxxx ♣x, che contiene 14 carte (probabile refuso); la mano non viene quindi mostrata. Si tratta di una mano con sei o sette quadri e quattro cuori;&lt;br /&gt;
&lt;br /&gt;
* rever nel nobile di risposta (picche), punteggio massimo 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQ54.2.AKJT7.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== La monocolore minore 18/20 ===&lt;br /&gt;
&lt;br /&gt;
È il tipo di mano che costituisce il vero vantaggio del PRD. Poter dare una sesta o settima di quella forza (a volte con 17) permette di &amp;quot;abbassare&amp;quot; la soglia della descrizione di una monocolore di piccolo rever: prima era inquadrata nel range 15/17, ora si potrà far onore anche alla mano di 14 molto belli. Per esempio è legittimo aprire di 1{{quadri}} e ripeterla a salto su risposta di un nobile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.AKQ765.983&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Il rever sbilanciato con fit quarto ===&lt;br /&gt;
&lt;br /&gt;
Crea un gradino espressivo in più per la bicolore di fit e amplia l&#039;arco di punteggio. Da adesso, nell&#039;ordine:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 3{{cuori}}&#039;&#039;&#039;: appoggio a livello 3. Può &amp;quot;scendere&amp;quot; a coprire anche l&#039;area dei 14/15 punti, con buone bicolori 5/4 e oltre, mai con la 4432. Campo di forza 14/16 (prima era 15/17); non tutti i 14, la fonte raccomanda solo quelli con cui sembra un peccato appoggiare soltanto a 2. Mano modello del punteggio minimo (&amp;quot;Distribuzione, mano pura, qualità dei punti. Se no, no.&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AK54.AKT97.853&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 4{{fiori}}&#039;&#039;&#039;: appoggio a manche, diretto (nessun singolo che piaccia descrivere) o con le varie splinter. Mano forte ma &amp;quot;di prese&amp;quot; piuttosto che &amp;quot;di punti&amp;quot;: una bella 6/4 o 7/4 di 15-16 punti con 8-9 vincenti teoriche. La mano di esempio della fonte (♠xxx ♥AQJx ♦AKJ10xx ♣-) contiene 14 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 2{{picche}}(*)&#039;&#039;&#039;: il Multirever. Un rovescio fatto di &amp;quot;punti&amp;quot;, troppi per una delle opzioni precedenti ma troppo pochi per l&#039;apertura di 2{{fiori}}; mediamente una mano di circa 18, 19, 20.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per confronto, la fonte riporta la sequenza seguente come &amp;quot;il massimo immaginabile&amp;quot;: una mano che non ha voluto rischiare il passo, perché può far manche da sola o con un re o una dama al posto giusto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rever reale 5/4 e rever reale 6/4 ===&lt;br /&gt;
&lt;br /&gt;
Sono differenziati perché una mano con una sesta ha una affrancabile in più e con vie naturali sarebbe difficile descriverla: una licita per la 5/4 e una per la 6/4 o 7/4.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente ==&lt;br /&gt;
&lt;br /&gt;
Il Passo è impensabile (il secondo colore potrebbe essere vuoto). Per ognuna delle cinque sequenze le repliche possibili del rispondente sono le seguenti; la seconda dichiarazione elencata come &amp;quot;relè&amp;quot; è quella forzante.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza&lt;br /&gt;
! Repliche del rispondente&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (relè), 2SA, 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}}, 2{{picche}} (relè), 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}} (relè), 2{{picche}}, 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA (relè), 3{{fiori}}, 3{{quadri}}, 3{{cuori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}}, 2SA (relè), 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ognuna ci sono due dichiarazioni assolutamente scoraggianti:&lt;br /&gt;
&lt;br /&gt;
* il riporto nel minore dell&#039;apertore (debolissima: &amp;quot;giocherei un parziale nella tua lunga, in cui ho mediamente due/tre cartine&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del proprio colore (anch&#039;essa estremamente scoraggiante: lunga e desiderio di giocare quel parziale, salvo plusvalori e fit dell&#039;apertore; tende a escludere visuale di manche: mediamente 4/5 punti, forse 6 brutti, e sei carte, cinque solo se annunciabili a livello due).&lt;br /&gt;
&lt;br /&gt;
Rimangono due dichiarazioni, i senza atout e il quarto colore. Per ognuno dei cinque casi:&lt;br /&gt;
&lt;br /&gt;
* la più economica è il &#039;&#039;&#039;relè&#039;&#039;&#039;, tendenzialmente forzante a manche, con 6/7+ punti;&lt;br /&gt;
&lt;br /&gt;
* la meno economica è il &#039;&#039;&#039;sign-off&#039;&#039;&#039; nel secondo colore detto dall&#039;apertore, sempre che lo abbia davvero.&lt;br /&gt;
&lt;br /&gt;
Quindi tre dichiarazioni deboli per arrestarsi al parziale in uno dei tre colori detti e un&#039;unica dichiarazione forzante per chiedere all&#039;apertore che tipo di rever possiede. Il relè si usa con tutte le mani con cui è legittimo affrontare almeno un tentativo di manche (sempre con 7+ punti, anche con 5/6 carini).&lt;br /&gt;
&lt;br /&gt;
Sequenze forzanti (relè):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2H(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il sign-off (secondo footnote della fonte) è un segnale scoraggiante di arresto: &amp;quot;se hai per davvero il secondo colore che hai detto, giocherei un parziale nel secondo colore; nessuna prospettiva di manche: semplicemente aspetto di riportarti nel minore lungo perché se per caso hai davvero il secondo colore può darsi che te lo possa appoggiare&amp;quot;. Il &amp;quot;gradino libero&amp;quot; è la più bassa dichiarazione a cui non sia già stato assegnato un significato particolare.&lt;br /&gt;
&lt;br /&gt;
== L&#039;apertore si descrive sul relè forzante ==&lt;br /&gt;
&lt;br /&gt;
Regole mnemoniche:&lt;br /&gt;
&lt;br /&gt;
* il primo gradino libero è sempre il &#039;&#039;&#039;Rever Reale&#039;&#039;&#039; (5/4);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;minore di apertura&#039;&#039;&#039; mostra sempre la monocolore minore;&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;secondo colore&#039;&#039;&#039; mostra sempre la 6-4;&lt;br /&gt;
&lt;br /&gt;
* l&#039;appoggio a &#039;&#039;&#039;tre&#039;&#039;&#039; nel colore del rispondente mostra la sbilanciata 18-20 di Gran Rever con fit quarto.&lt;br /&gt;
&lt;br /&gt;
Dopo il relè si dà per scontato che la coppia abbia la forza per la manche: nulla è più passabile sotto manche.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza fino al relè&lt;br /&gt;
! 1° gradino libero: RR 5/4&lt;br /&gt;
! Ripetizione del minore: monocolore&lt;br /&gt;
! Ripetizione del 2° colore: RR 6-4&lt;br /&gt;
! Appoggio a tre: sbilanciata 18-20 con 4 carte&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{cuori}} (6 fiori, 4 cuori)&lt;br /&gt;
| 3{{quadri}} (4 quadri)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (nella fonte segnalato con &amp;quot;(!!!)&amp;quot;)&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{picche}} (6 quadri, 4 picche)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{cuori}} (6 quadri, 4 cuori)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi dopo il relè ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: le cartine &amp;quot;x&amp;quot; della fonte sono state sostituite da carte basse non duplicate; il &amp;quot;10&amp;quot; è scritto T.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rever reale 5/4.&#039;&#039;&#039; Su 1{{quadri}} 1{{picche}} 2{{cuori}} il rispondente fa il relè 2SA; 3{{fiori}} (primo gradino libero) mostra il rever reale 5/4. Su 3{{picche}}, che allunga le picche, Sud appoggia; Nord capisce che la Q{{fiori}} è valore nullo e si accontenta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3C(RR) P 3S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQ6.AJ97.AK976.4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;JT872.Q85.Q2.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monocolore forte.&#039;&#039;&#039; Sud svela la monocolore con la ripetizione del minore, Nord dichiara 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 3C(monocolore) P 3NT&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A94.4.AQJ974&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q87.JT85.QJT2.K8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Il riporto è una replica debolissima.&#039;&#039;&#039; Secondo la fonte, il riporto significa: non vorrei giocare la manche neppure se hai il rever con fit quarto nel mio colore, a meno che tu non abbia &amp;quot;i serpenti in mano&amp;quot;. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;A4.K9.KQJ976.AJ5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J875.876.32.K876&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Relè debole (secondo gradino libero).&#039;&#039;&#039; Nord ha una sola prospettiva di manche, il rever fiori-picche; il 2SA è il secondo gradino libero, debole, mentre il relè sarebbe stato 2{{cuori}}. Sud ridichiara a seconda della sua mano e dice 3{{quadri}} solo con la 5/4 minore e punteggio minimo; con 20 direbbe 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2NT P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.A63.KQ76.AKJ54&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J9854.87.A985.87&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atout fissato nel nobile.&#039;&#039;&#039; Con il rever di appoggio quarto nel nobile l&#039;atout è inequivocabilmente fissato: il 4{{quadri}} è una cue bid, non un ripensamento sull&#039;atout. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQJ4.3.AQJ765.A2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3S P 4D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La mano di Nord riportata dalla fonte (♠K109xxx ♥xx ♦Kx ♣Qx) contiene soltanto 12 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minore dell&#039;apertore fissato a livello 4.&#039;&#039;&#039; Il minore dell&#039;apertore si può fissare dichiarandolo a livello 3 (comunque forzante) o a livello 4: inequivocabilmente atout fissato e visuale di slam. La mano limite si sarebbe espressa riportando a 3{{fiori}} subito, direttamente su 2{{cuori}}, evitando il relè.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 2NT P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A876.2.AQJ98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;43.KQ4.AJ83.K765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arresto a livello di riporto, ma Sud chiama manche.&#039;&#039;&#039; Nord frena con la ripetizione del proprio colore, ma Sud, con la mano di fit a picche, chiama comunque manche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AKJ2.A82.KQJ4.J9&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q98764.K75.2.763&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte il commento a questa sequenza contiene una formula poco chiara (&amp;quot;5 0 6??&amp;quot;); qui si riportano la sequenza e le mani con le cartine sostituite.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte descrive una sola versione della convenzione e non menziona varianti: non sono note varianti significative e per questo non esistono pagine di variante.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Splinter]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
I vincoli di distribuzione per il generatore di smazzate (campo shape_constraints) sono ricavati dalla trattazione di Marina Causa (Corso Preagonistica 2026); i range di punti sono indicativi.&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;03. Il Multirever, o Primo Rever Disponibile (PRD)&amp;quot; (PDF, 5 pagine). L&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Multirever&amp;diff=1981</id>
		<title>Multirever</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Multirever&amp;diff=1981"/>
		<updated>2026-10-20T21:27:09Z</updated>

		<summary type="html">&lt;p&gt;Lpala: shape_constraints: rispondente meno sbilanciato (seme 4-5, altri max 5, 6-11 PO; mani apertore max 7 carte, altri semi max 3)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Multirever}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di sviluppo]]&lt;br /&gt;
[[Categoria:Convenzioni di licita]]&lt;br /&gt;
&lt;br /&gt;
= Multirever =&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Multirever (Primo Rever Disponibile, PRD)&lt;br /&gt;
|tipologia=Sviluppo / Rever dell&#039;apertore (rever ambiguo, forzante)&lt;br /&gt;
|scopo=Dopo apertura in un minore e risposta di 1 a colore, dare un significato convenzionale al primo rever a colore nuovo disponibile dell&#039;apertore: una dichiarazione forzante e ambigua sulla tipologia della mano (sempre mano forte), chiarita dal rispondente con un relè e dalla successiva descrizione dell&#039;apertore&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} o 1{{quadri}}, risposta di uno a colore, nessun intervento avversario; la più economica tra le dichiarazioni di livello due a colore nuovo che rappresentino un rever. Le sequenze sono cinque: 1{{fiori}} 1{{quadri}} 2{{cuori}}; 1{{fiori}} 1{{cuori}} 2{{quadri}}; 1{{fiori}} 1{{picche}} 2{{quadri}}; 1{{quadri}} 1{{cuori}} 2{{picche}}; 1{{quadri}} 1{{picche}} 2{{cuori}}&lt;br /&gt;
|risposte=Il rispondente non passa mai (il secondo colore potrebbe essere vuoto). Tre repliche deboli: riporto nel minore di apertura (scoraggiantissima), ripetizione del proprio colore (scoraggiante), sign-off nel secondo colore dichiarato dall&#039;apertore (la meno economica tra senza atout e quarto colore). Una replica forzante: il relè, la più economica tra senza atout e quarto colore (7+ punti, tendenzialmente forzante a manche). Sul relè l&#039;apertore si descrive: primo gradino libero = rever reale 5/4; ripetizione del minore di apertura = monocolore minore; ripetizione del secondo colore = rever 6-4; appoggio a tre nel colore del rispondente = mano sbilanciata di 18-20 con fit quarto (Gran Rever)&lt;br /&gt;
|note=Ideatore non indicato nella fonte; descrizione secondo la trattazione di Marina Causa. Forzante senza eccezioni: l&#039;apertore può anche non avere il secondo colore, ma ha sempre almeno 5 carte nel minore di apertura. Non è convenzionale ogni rever dell&#039;apertore, solo il primo rever possibile; non vale su risposta di 1SA. Nessun intervento avversario. Non sono note varianti nella fonte&lt;br /&gt;
|tag_cc=rebid_rever&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints = 1C-1D-2H mono: opener C:6-7 S:0-3 H:0-3 D:0-3 hcp:18-21; responder S:0-5 H:0-3 D:4-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1D-2H RR 5/4: opener C:5 H:4 S:0-3 D:0-3 hcp:16-21; responder S:0-5 H:0-3 D:4-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1D-2H RR 6/4: opener C:6-7 H:4 S:0-3 D:0-3 hcp:16-21; responder S:0-5 H:0-3 D:4-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1D-2H Gran rever: fit:D8+ opener C:5-6 D:4 H:0-1 hcp:18-20; responder S:0-5 H:0-3 D:4-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1H-2D mono: opener C:6-7 S:0-3 H:0-3 D:0-3 hcp:18-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1H-2D RR 5/4: opener C:5 D:4 S:0-3 H:0-3 hcp:16-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1H-2D RR 6/4: opener C:6-7 D:4 S:0-3 H:0-3 hcp:16-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1H-2D Gran rever: fit:H8+ opener C:5-6 H:4 D:0-1 hcp:18-20; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1S-2D mono: opener C:6-7 S:0-3 H:0-3 D:0-3 hcp:18-21; responder S:4-5 H:0-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1S-2D RR 5/4: opener C:5 D:4 S:0-3 H:0-3 hcp:16-21; responder S:4-5 H:0-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1S-2D RR 6/4: opener C:6-7 D:4 S:0-3 H:0-3 hcp:16-21; responder S:4-5 H:0-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1C-1S-2D Gran rever: fit:S8+ opener C:5-6 S:4 D:0-1 hcp:18-20; responder S:4-5 H:0-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1D-1H-2S mono: opener D:6-7 S:0-3 H:0-3 C:0-3 hcp:18-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1D-1H-2S RR 5/4: opener D:5 S:4 H:0-3 C:0-3 hcp:16-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1D-1H-2S RR 6/4: opener D:6-7 S:4 H:0-3 C:0-3 hcp:16-21; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1D-1H-2S Gran rever: fit:H8+ opener D:5-6 H:4 S:0-1 hcp:18-20; responder S:0-5 H:4-5 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1D-1S-2H mono: opener D:6-7 S:0-3 H:0-3 C:0-3 hcp:18-21; responder S:4-5 H:0-3 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1D-1S-2H RR 5/4: opener D:5 H:4 S:0-3 C:0-3 hcp:16-21; responder S:4-5 H:0-3 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1D-1S-2H RR 6/4: opener D:6-7 H:4 S:0-3 C:0-3 hcp:16-21; responder S:4-5 H:0-3 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet // 1D-1S-2H Gran rever: fit:S8+ opener D:5-6 S:4 H:0-1 hcp:18-20; responder S:4-5 H:0-3 D:0-5 C:0-5 hcp:6-11; opp1 quiet; opp2 quiet&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;Multirever&#039;&#039;&#039;, detto anche &#039;&#039;&#039;Primo Rever Disponibile (PRD)&#039;&#039;&#039;, è un rever &#039;&#039;ambiguo&#039;&#039; dell&#039;apertore che segue un&#039;apertura in un colore minore e una risposta di 1 a colore. Questa pagina riporta la trattazione di Marina Causa (vedi [[#Fonti|Fonti]]); l&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;br /&gt;
&lt;br /&gt;
== Idea ==&lt;br /&gt;
&lt;br /&gt;
Secondo la trattazione di Marina Causa, l&#039;ambiguità del Multirever non riguarda la forza (è sempre una mano forte) ma la &#039;&#039;&#039;tipologia della mano&#039;&#039;&#039;. La dichiarazione, per esempio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
non dice in modo univoco &amp;quot;ho una bicolore quadri-cuori di rovescio&amp;quot;: il colore espresso è solo una delle possibilità. È un rever &amp;quot;Multicolor&amp;quot; la cui fisionomia si chiarisce dopo. È &#039;&#039;&#039;tassativamente forzante&#039;&#039;&#039;: l&#039;apertore potrebbe non avere affatto il secondo colore, ma ha sempre almeno 5 carte nel primo.&lt;br /&gt;
&lt;br /&gt;
=== Lo spunto ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: nelle trascrizioni della fonte le cartine indicate con &amp;quot;x&amp;quot; sono state sostituite da carte basse non duplicate, perché il parser delle mani non accetta le &amp;quot;x&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Con questa mano (3 picche, 1 cuori, 3 quadri, 6 fiori) un buon naturalista apre di 1{{fiori}} e, se il compagno risponde 1 in un nobile, dichiara 2{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.KQ3.AKJ765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I motivi sono tre:&lt;br /&gt;
&lt;br /&gt;
* è l&#039;unico modo per tenere aperta la dichiarazione (un rever a colore nuovo è forzante anche nel liscione);&lt;br /&gt;
&lt;br /&gt;
* si evita di rischiare il passo e di mortificare la mano con il salto 1{{fiori}} - 3{{fiori}} (&amp;quot;uno poi tre&amp;quot; rappresenta piccoli rever di 15/17 punti);&lt;br /&gt;
&lt;br /&gt;
* il compagno, anche se dovesse preferire le quadri, sarà portato a rispettare le pressioni della mano forte, tanto più trattandosi di colori entrambi minori.&lt;br /&gt;
&lt;br /&gt;
Le quadri sono terze e il compagno non lo sa, ma poco importa, tanto è forzante. Allora &amp;quot;tanto vale codificarlo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Presupposti: quale rever è convenzionale ==&lt;br /&gt;
&lt;br /&gt;
Condizioni: apertura in un minore; risposta uno su uno a colore; nessun intervento avversario; la dichiarazione è il più economico dei possibili rever a colore nuovo. Non tutti i rever dell&#039;apertore sono convenzionali: lo è solo &amp;quot;il primo rever possibile&amp;quot;, cioè la più bassa dichiarazione di livello due che rappresenti un rever.&lt;br /&gt;
&lt;br /&gt;
Le sequenze convenzionali sono esattamente cinque (tre con partenza fiori, due con quadri):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restano rever &amp;quot;normali&amp;quot; (nulla cambia rispetto a prima) le sequenze seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è il primo rever possibile: il primo sarebbe 2{{cuori}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è una dichiarazione a colore nuovo (è un appoggio).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1NT P 2D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La convenzione non funziona su risposta di 1SA.&lt;br /&gt;
&lt;br /&gt;
== Quali mani ==&lt;br /&gt;
&lt;br /&gt;
Per cominciare, solo quattro possibilità:&lt;br /&gt;
&lt;br /&gt;
# la monocolore minore di 18/20 punti (che attualmente non ha collocazione);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever 5/4 (il Rever Reale, RR);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever ma distribuzione 6/4;&lt;br /&gt;
&lt;br /&gt;
# la mano sbilanciata di Gran Rever con fit quarto nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Il rispondente, per chiedere, usa come relè interrogativo la prima dichiarazione possibile che non corrisponda né alla ripetizione del seme di risposta né al riporto nel minore di apertura.&lt;br /&gt;
&lt;br /&gt;
Esempi di mani dell&#039;apertore nella sequenza&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* monocolore di quadri forte, più di &amp;quot;uno poi tre&amp;quot; ma non abbastanza per 2{{fiori}}; punteggio promesso 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AQ54.KQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale 5/4, punteggio 16-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.KQ54.AQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale con distribuzione 6/4 (&amp;quot;un asso in più&amp;quot;), punteggio 16-21: la fonte riporta ♠Kx ♥KJxx ♦AKQxxxx ♣x, che contiene 14 carte (probabile refuso); la mano non viene quindi mostrata. Si tratta di una mano con sei o sette quadri e quattro cuori;&lt;br /&gt;
&lt;br /&gt;
* rever nel nobile di risposta (picche), punteggio massimo 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQ54.2.AKJT7.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== La monocolore minore 18/20 ===&lt;br /&gt;
&lt;br /&gt;
È il tipo di mano che costituisce il vero vantaggio del PRD. Poter dare una sesta o settima di quella forza (a volte con 17) permette di &amp;quot;abbassare&amp;quot; la soglia della descrizione di una monocolore di piccolo rever: prima era inquadrata nel range 15/17, ora si potrà far onore anche alla mano di 14 molto belli. Per esempio è legittimo aprire di 1{{quadri}} e ripeterla a salto su risposta di un nobile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.AKQ765.983&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Il rever sbilanciato con fit quarto ===&lt;br /&gt;
&lt;br /&gt;
Crea un gradino espressivo in più per la bicolore di fit e amplia l&#039;arco di punteggio. Da adesso, nell&#039;ordine:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 3{{cuori}}&#039;&#039;&#039;: appoggio a livello 3. Può &amp;quot;scendere&amp;quot; a coprire anche l&#039;area dei 14/15 punti, con buone bicolori 5/4 e oltre, mai con la 4432. Campo di forza 14/16 (prima era 15/17); non tutti i 14, la fonte raccomanda solo quelli con cui sembra un peccato appoggiare soltanto a 2. Mano modello del punteggio minimo (&amp;quot;Distribuzione, mano pura, qualità dei punti. Se no, no.&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AK54.AKT97.853&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 4{{fiori}}&#039;&#039;&#039;: appoggio a manche, diretto (nessun singolo che piaccia descrivere) o con le varie splinter. Mano forte ma &amp;quot;di prese&amp;quot; piuttosto che &amp;quot;di punti&amp;quot;: una bella 6/4 o 7/4 di 15-16 punti con 8-9 vincenti teoriche. La mano di esempio della fonte (♠xxx ♥AQJx ♦AKJ10xx ♣-) contiene 14 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 2{{picche}}(*)&#039;&#039;&#039;: il Multirever. Un rovescio fatto di &amp;quot;punti&amp;quot;, troppi per una delle opzioni precedenti ma troppo pochi per l&#039;apertura di 2{{fiori}}; mediamente una mano di circa 18, 19, 20.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per confronto, la fonte riporta la sequenza seguente come &amp;quot;il massimo immaginabile&amp;quot;: una mano che non ha voluto rischiare il passo, perché può far manche da sola o con un re o una dama al posto giusto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rever reale 5/4 e rever reale 6/4 ===&lt;br /&gt;
&lt;br /&gt;
Sono differenziati perché una mano con una sesta ha una affrancabile in più e con vie naturali sarebbe difficile descriverla: una licita per la 5/4 e una per la 6/4 o 7/4.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente ==&lt;br /&gt;
&lt;br /&gt;
Il Passo è impensabile (il secondo colore potrebbe essere vuoto). Per ognuna delle cinque sequenze le repliche possibili del rispondente sono le seguenti; la seconda dichiarazione elencata come &amp;quot;relè&amp;quot; è quella forzante.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza&lt;br /&gt;
! Repliche del rispondente&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (relè), 2SA, 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}}, 2{{picche}} (relè), 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}} (relè), 2{{picche}}, 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA (relè), 3{{fiori}}, 3{{quadri}}, 3{{cuori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}}, 2SA (relè), 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ognuna ci sono due dichiarazioni assolutamente scoraggianti:&lt;br /&gt;
&lt;br /&gt;
* il riporto nel minore dell&#039;apertore (debolissima: &amp;quot;giocherei un parziale nella tua lunga, in cui ho mediamente due/tre cartine&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del proprio colore (anch&#039;essa estremamente scoraggiante: lunga e desiderio di giocare quel parziale, salvo plusvalori e fit dell&#039;apertore; tende a escludere visuale di manche: mediamente 4/5 punti, forse 6 brutti, e sei carte, cinque solo se annunciabili a livello due).&lt;br /&gt;
&lt;br /&gt;
Rimangono due dichiarazioni, i senza atout e il quarto colore. Per ognuno dei cinque casi:&lt;br /&gt;
&lt;br /&gt;
* la più economica è il &#039;&#039;&#039;relè&#039;&#039;&#039;, tendenzialmente forzante a manche, con 6/7+ punti;&lt;br /&gt;
&lt;br /&gt;
* la meno economica è il &#039;&#039;&#039;sign-off&#039;&#039;&#039; nel secondo colore detto dall&#039;apertore, sempre che lo abbia davvero.&lt;br /&gt;
&lt;br /&gt;
Quindi tre dichiarazioni deboli per arrestarsi al parziale in uno dei tre colori detti e un&#039;unica dichiarazione forzante per chiedere all&#039;apertore che tipo di rever possiede. Il relè si usa con tutte le mani con cui è legittimo affrontare almeno un tentativo di manche (sempre con 7+ punti, anche con 5/6 carini).&lt;br /&gt;
&lt;br /&gt;
Sequenze forzanti (relè):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2H(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il sign-off (secondo footnote della fonte) è un segnale scoraggiante di arresto: &amp;quot;se hai per davvero il secondo colore che hai detto, giocherei un parziale nel secondo colore; nessuna prospettiva di manche: semplicemente aspetto di riportarti nel minore lungo perché se per caso hai davvero il secondo colore può darsi che te lo possa appoggiare&amp;quot;. Il &amp;quot;gradino libero&amp;quot; è la più bassa dichiarazione a cui non sia già stato assegnato un significato particolare.&lt;br /&gt;
&lt;br /&gt;
== L&#039;apertore si descrive sul relè forzante ==&lt;br /&gt;
&lt;br /&gt;
Regole mnemoniche:&lt;br /&gt;
&lt;br /&gt;
* il primo gradino libero è sempre il &#039;&#039;&#039;Rever Reale&#039;&#039;&#039; (5/4);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;minore di apertura&#039;&#039;&#039; mostra sempre la monocolore minore;&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;secondo colore&#039;&#039;&#039; mostra sempre la 6-4;&lt;br /&gt;
&lt;br /&gt;
* l&#039;appoggio a &#039;&#039;&#039;tre&#039;&#039;&#039; nel colore del rispondente mostra la sbilanciata 18-20 di Gran Rever con fit quarto.&lt;br /&gt;
&lt;br /&gt;
Dopo il relè si dà per scontato che la coppia abbia la forza per la manche: nulla è più passabile sotto manche.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza fino al relè&lt;br /&gt;
! 1° gradino libero: RR 5/4&lt;br /&gt;
! Ripetizione del minore: monocolore&lt;br /&gt;
! Ripetizione del 2° colore: RR 6-4&lt;br /&gt;
! Appoggio a tre: sbilanciata 18-20 con 4 carte&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{cuori}} (6 fiori, 4 cuori)&lt;br /&gt;
| 3{{quadri}} (4 quadri)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (nella fonte segnalato con &amp;quot;(!!!)&amp;quot;)&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{picche}} (6 quadri, 4 picche)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{cuori}} (6 quadri, 4 cuori)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi dopo il relè ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: le cartine &amp;quot;x&amp;quot; della fonte sono state sostituite da carte basse non duplicate; il &amp;quot;10&amp;quot; è scritto T.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rever reale 5/4.&#039;&#039;&#039; Su 1{{quadri}} 1{{picche}} 2{{cuori}} il rispondente fa il relè 2SA; 3{{fiori}} (primo gradino libero) mostra il rever reale 5/4. Su 3{{picche}}, che allunga le picche, Sud appoggia; Nord capisce che la Q{{fiori}} è valore nullo e si accontenta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3C(RR) P 3S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQ6.AJ97.AK976.4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;JT872.Q85.Q2.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monocolore forte.&#039;&#039;&#039; Sud svela la monocolore con la ripetizione del minore, Nord dichiara 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 3C(monocolore) P 3NT&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A94.4.AQJ974&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q87.JT85.QJT2.K8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Il riporto è una replica debolissima.&#039;&#039;&#039; Secondo la fonte, il riporto significa: non vorrei giocare la manche neppure se hai il rever con fit quarto nel mio colore, a meno che tu non abbia &amp;quot;i serpenti in mano&amp;quot;. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;A4.K9.KQJ976.AJ5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J875.876.32.K876&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Relè debole (secondo gradino libero).&#039;&#039;&#039; Nord ha una sola prospettiva di manche, il rever fiori-picche; il 2SA è il secondo gradino libero, debole, mentre il relè sarebbe stato 2{{cuori}}. Sud ridichiara a seconda della sua mano e dice 3{{quadri}} solo con la 5/4 minore e punteggio minimo; con 20 direbbe 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2NT P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.A63.KQ76.AKJ54&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J9854.87.A985.87&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atout fissato nel nobile.&#039;&#039;&#039; Con il rever di appoggio quarto nel nobile l&#039;atout è inequivocabilmente fissato: il 4{{quadri}} è una cue bid, non un ripensamento sull&#039;atout. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQJ4.3.AQJ765.A2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3S P 4D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La mano di Nord riportata dalla fonte (♠K109xxx ♥xx ♦Kx ♣Qx) contiene soltanto 12 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minore dell&#039;apertore fissato a livello 4.&#039;&#039;&#039; Il minore dell&#039;apertore si può fissare dichiarandolo a livello 3 (comunque forzante) o a livello 4: inequivocabilmente atout fissato e visuale di slam. La mano limite si sarebbe espressa riportando a 3{{fiori}} subito, direttamente su 2{{cuori}}, evitando il relè.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 2NT P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A876.2.AQJ98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;43.KQ4.AJ83.K765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arresto a livello di riporto, ma Sud chiama manche.&#039;&#039;&#039; Nord frena con la ripetizione del proprio colore, ma Sud, con la mano di fit a picche, chiama comunque manche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AKJ2.A82.KQJ4.J9&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q98764.K75.2.763&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte il commento a questa sequenza contiene una formula poco chiara (&amp;quot;5 0 6??&amp;quot;); qui si riportano la sequenza e le mani con le cartine sostituite.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte descrive una sola versione della convenzione e non menziona varianti: non sono note varianti significative e per questo non esistono pagine di variante.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Splinter]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
I vincoli di distribuzione per il generatore di smazzate (campo shape_constraints) sono ricavati dalla trattazione di Marina Causa (Corso Preagonistica 2026); i range di punti sono indicativi.&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;03. Il Multirever, o Primo Rever Disponibile (PRD)&amp;quot; (PDF, 5 pagine). L&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Multirever&amp;diff=1980</id>
		<title>Multirever</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Multirever&amp;diff=1980"/>
		<updated>2026-10-20T14:10:33Z</updated>

		<summary type="html">&lt;p&gt;Lpala: shape_constraints: avversari quiet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Multirever}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di sviluppo]]&lt;br /&gt;
[[Categoria:Convenzioni di licita]]&lt;br /&gt;
&lt;br /&gt;
= Multirever =&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Multirever (Primo Rever Disponibile, PRD)&lt;br /&gt;
|tipologia=Sviluppo / Rever dell&#039;apertore (rever ambiguo, forzante)&lt;br /&gt;
|scopo=Dopo apertura in un minore e risposta di 1 a colore, dare un significato convenzionale al primo rever a colore nuovo disponibile dell&#039;apertore: una dichiarazione forzante e ambigua sulla tipologia della mano (sempre mano forte), chiarita dal rispondente con un relè e dalla successiva descrizione dell&#039;apertore&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} o 1{{quadri}}, risposta di uno a colore, nessun intervento avversario; la più economica tra le dichiarazioni di livello due a colore nuovo che rappresentino un rever. Le sequenze sono cinque: 1{{fiori}} 1{{quadri}} 2{{cuori}}; 1{{fiori}} 1{{cuori}} 2{{quadri}}; 1{{fiori}} 1{{picche}} 2{{quadri}}; 1{{quadri}} 1{{cuori}} 2{{picche}}; 1{{quadri}} 1{{picche}} 2{{cuori}}&lt;br /&gt;
|risposte=Il rispondente non passa mai (il secondo colore potrebbe essere vuoto). Tre repliche deboli: riporto nel minore di apertura (scoraggiantissima), ripetizione del proprio colore (scoraggiante), sign-off nel secondo colore dichiarato dall&#039;apertore (la meno economica tra senza atout e quarto colore). Una replica forzante: il relè, la più economica tra senza atout e quarto colore (7+ punti, tendenzialmente forzante a manche). Sul relè l&#039;apertore si descrive: primo gradino libero = rever reale 5/4; ripetizione del minore di apertura = monocolore minore; ripetizione del secondo colore = rever 6-4; appoggio a tre nel colore del rispondente = mano sbilanciata di 18-20 con fit quarto (Gran Rever)&lt;br /&gt;
|note=Ideatore non indicato nella fonte; descrizione secondo la trattazione di Marina Causa. Forzante senza eccezioni: l&#039;apertore può anche non avere il secondo colore, ma ha sempre almeno 5 carte nel minore di apertura. Non è convenzionale ogni rever dell&#039;apertore, solo il primo rever possibile; non vale su risposta di 1SA. Nessun intervento avversario. Non sono note varianti nella fonte&lt;br /&gt;
|tag_cc=rebid_rever&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints = 1C-1D-2H mono: opener C:6+ hcp:18-21; responder D:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1D-2H RR 5/4: opener C:5 H:4 D:0-3 hcp:16-21; responder D:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1D-2H RR 6/4: opener C:6+ H:4 hcp:16-21; responder D:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1D-2H Gran rever: fit:D8+ opener C:5+ D:4 H:0-1 hcp:18-20; responder D:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1H-2D mono: opener C:6+ hcp:18-21; responder H:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1H-2D RR 5/4: opener C:5 D:4 H:0-3 hcp:16-21; responder H:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1H-2D RR 6/4: opener C:6+ D:4 hcp:16-21; responder H:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1H-2D Gran rever: fit:H8+ opener C:5+ H:4 D:0-1 hcp:18-20; responder H:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1S-2D mono: opener C:6+ hcp:18-21; responder S:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1S-2D RR 5/4: opener C:5 D:4 S:0-3 hcp:16-21; responder S:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1S-2D RR 6/4: opener C:6+ D:4 hcp:16-21; responder S:4+ hcp:6+; opp1 quiet; opp2 quiet // 1C-1S-2D Gran rever: fit:S8+ opener C:5+ S:4 D:0-1 hcp:18-20; responder S:4+ hcp:6+; opp1 quiet; opp2 quiet // 1D-1H-2S mono: opener D:6+ hcp:18-21; responder H:4+ hcp:6+; opp1 quiet; opp2 quiet // 1D-1H-2S RR 5/4: opener D:5 S:4 H:0-3 hcp:16-21; responder H:4+ hcp:6+; opp1 quiet; opp2 quiet // 1D-1H-2S RR 6/4: opener D:6+ S:4 hcp:16-21; responder H:4+ hcp:6+; opp1 quiet; opp2 quiet // 1D-1H-2S Gran rever: fit:H8+ opener D:5+ H:4 S:0-1 hcp:18-20; responder H:4+ hcp:6+; opp1 quiet; opp2 quiet // 1D-1S-2H mono: opener D:6+ hcp:18-21; responder S:4+ hcp:6+; opp1 quiet; opp2 quiet // 1D-1S-2H RR 5/4: opener D:5 H:4 S:0-3 hcp:16-21; responder S:4+ hcp:6+; opp1 quiet; opp2 quiet // 1D-1S-2H RR 6/4: opener D:6+ H:4 hcp:16-21; responder S:4+ hcp:6+; opp1 quiet; opp2 quiet // 1D-1S-2H Gran rever: fit:S8+ opener D:5+ S:4 H:0-1 hcp:18-20; responder S:4+ hcp:6+; opp1 quiet; opp2 quiet&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;Multirever&#039;&#039;&#039;, detto anche &#039;&#039;&#039;Primo Rever Disponibile (PRD)&#039;&#039;&#039;, è un rever &#039;&#039;ambiguo&#039;&#039; dell&#039;apertore che segue un&#039;apertura in un colore minore e una risposta di 1 a colore. Questa pagina riporta la trattazione di Marina Causa (vedi [[#Fonti|Fonti]]); l&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;br /&gt;
&lt;br /&gt;
== Idea ==&lt;br /&gt;
&lt;br /&gt;
Secondo la trattazione di Marina Causa, l&#039;ambiguità del Multirever non riguarda la forza (è sempre una mano forte) ma la &#039;&#039;&#039;tipologia della mano&#039;&#039;&#039;. La dichiarazione, per esempio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
non dice in modo univoco &amp;quot;ho una bicolore quadri-cuori di rovescio&amp;quot;: il colore espresso è solo una delle possibilità. È un rever &amp;quot;Multicolor&amp;quot; la cui fisionomia si chiarisce dopo. È &#039;&#039;&#039;tassativamente forzante&#039;&#039;&#039;: l&#039;apertore potrebbe non avere affatto il secondo colore, ma ha sempre almeno 5 carte nel primo.&lt;br /&gt;
&lt;br /&gt;
=== Lo spunto ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: nelle trascrizioni della fonte le cartine indicate con &amp;quot;x&amp;quot; sono state sostituite da carte basse non duplicate, perché il parser delle mani non accetta le &amp;quot;x&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Con questa mano (3 picche, 1 cuori, 3 quadri, 6 fiori) un buon naturalista apre di 1{{fiori}} e, se il compagno risponde 1 in un nobile, dichiara 2{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.KQ3.AKJ765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I motivi sono tre:&lt;br /&gt;
&lt;br /&gt;
* è l&#039;unico modo per tenere aperta la dichiarazione (un rever a colore nuovo è forzante anche nel liscione);&lt;br /&gt;
&lt;br /&gt;
* si evita di rischiare il passo e di mortificare la mano con il salto 1{{fiori}} - 3{{fiori}} (&amp;quot;uno poi tre&amp;quot; rappresenta piccoli rever di 15/17 punti);&lt;br /&gt;
&lt;br /&gt;
* il compagno, anche se dovesse preferire le quadri, sarà portato a rispettare le pressioni della mano forte, tanto più trattandosi di colori entrambi minori.&lt;br /&gt;
&lt;br /&gt;
Le quadri sono terze e il compagno non lo sa, ma poco importa, tanto è forzante. Allora &amp;quot;tanto vale codificarlo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Presupposti: quale rever è convenzionale ==&lt;br /&gt;
&lt;br /&gt;
Condizioni: apertura in un minore; risposta uno su uno a colore; nessun intervento avversario; la dichiarazione è il più economico dei possibili rever a colore nuovo. Non tutti i rever dell&#039;apertore sono convenzionali: lo è solo &amp;quot;il primo rever possibile&amp;quot;, cioè la più bassa dichiarazione di livello due che rappresenti un rever.&lt;br /&gt;
&lt;br /&gt;
Le sequenze convenzionali sono esattamente cinque (tre con partenza fiori, due con quadri):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restano rever &amp;quot;normali&amp;quot; (nulla cambia rispetto a prima) le sequenze seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è il primo rever possibile: il primo sarebbe 2{{cuori}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è una dichiarazione a colore nuovo (è un appoggio).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1NT P 2D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La convenzione non funziona su risposta di 1SA.&lt;br /&gt;
&lt;br /&gt;
== Quali mani ==&lt;br /&gt;
&lt;br /&gt;
Per cominciare, solo quattro possibilità:&lt;br /&gt;
&lt;br /&gt;
# la monocolore minore di 18/20 punti (che attualmente non ha collocazione);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever 5/4 (il Rever Reale, RR);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever ma distribuzione 6/4;&lt;br /&gt;
&lt;br /&gt;
# la mano sbilanciata di Gran Rever con fit quarto nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Il rispondente, per chiedere, usa come relè interrogativo la prima dichiarazione possibile che non corrisponda né alla ripetizione del seme di risposta né al riporto nel minore di apertura.&lt;br /&gt;
&lt;br /&gt;
Esempi di mani dell&#039;apertore nella sequenza&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* monocolore di quadri forte, più di &amp;quot;uno poi tre&amp;quot; ma non abbastanza per 2{{fiori}}; punteggio promesso 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AQ54.KQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale 5/4, punteggio 16-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.KQ54.AQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale con distribuzione 6/4 (&amp;quot;un asso in più&amp;quot;), punteggio 16-21: la fonte riporta ♠Kx ♥KJxx ♦AKQxxxx ♣x, che contiene 14 carte (probabile refuso); la mano non viene quindi mostrata. Si tratta di una mano con sei o sette quadri e quattro cuori;&lt;br /&gt;
&lt;br /&gt;
* rever nel nobile di risposta (picche), punteggio massimo 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQ54.2.AKJT7.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== La monocolore minore 18/20 ===&lt;br /&gt;
&lt;br /&gt;
È il tipo di mano che costituisce il vero vantaggio del PRD. Poter dare una sesta o settima di quella forza (a volte con 17) permette di &amp;quot;abbassare&amp;quot; la soglia della descrizione di una monocolore di piccolo rever: prima era inquadrata nel range 15/17, ora si potrà far onore anche alla mano di 14 molto belli. Per esempio è legittimo aprire di 1{{quadri}} e ripeterla a salto su risposta di un nobile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.AKQ765.983&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Il rever sbilanciato con fit quarto ===&lt;br /&gt;
&lt;br /&gt;
Crea un gradino espressivo in più per la bicolore di fit e amplia l&#039;arco di punteggio. Da adesso, nell&#039;ordine:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 3{{cuori}}&#039;&#039;&#039;: appoggio a livello 3. Può &amp;quot;scendere&amp;quot; a coprire anche l&#039;area dei 14/15 punti, con buone bicolori 5/4 e oltre, mai con la 4432. Campo di forza 14/16 (prima era 15/17); non tutti i 14, la fonte raccomanda solo quelli con cui sembra un peccato appoggiare soltanto a 2. Mano modello del punteggio minimo (&amp;quot;Distribuzione, mano pura, qualità dei punti. Se no, no.&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AK54.AKT97.853&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 4{{fiori}}&#039;&#039;&#039;: appoggio a manche, diretto (nessun singolo che piaccia descrivere) o con le varie splinter. Mano forte ma &amp;quot;di prese&amp;quot; piuttosto che &amp;quot;di punti&amp;quot;: una bella 6/4 o 7/4 di 15-16 punti con 8-9 vincenti teoriche. La mano di esempio della fonte (♠xxx ♥AQJx ♦AKJ10xx ♣-) contiene 14 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 2{{picche}}(*)&#039;&#039;&#039;: il Multirever. Un rovescio fatto di &amp;quot;punti&amp;quot;, troppi per una delle opzioni precedenti ma troppo pochi per l&#039;apertura di 2{{fiori}}; mediamente una mano di circa 18, 19, 20.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per confronto, la fonte riporta la sequenza seguente come &amp;quot;il massimo immaginabile&amp;quot;: una mano che non ha voluto rischiare il passo, perché può far manche da sola o con un re o una dama al posto giusto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rever reale 5/4 e rever reale 6/4 ===&lt;br /&gt;
&lt;br /&gt;
Sono differenziati perché una mano con una sesta ha una affrancabile in più e con vie naturali sarebbe difficile descriverla: una licita per la 5/4 e una per la 6/4 o 7/4.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente ==&lt;br /&gt;
&lt;br /&gt;
Il Passo è impensabile (il secondo colore potrebbe essere vuoto). Per ognuna delle cinque sequenze le repliche possibili del rispondente sono le seguenti; la seconda dichiarazione elencata come &amp;quot;relè&amp;quot; è quella forzante.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza&lt;br /&gt;
! Repliche del rispondente&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (relè), 2SA, 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}}, 2{{picche}} (relè), 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}} (relè), 2{{picche}}, 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA (relè), 3{{fiori}}, 3{{quadri}}, 3{{cuori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}}, 2SA (relè), 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ognuna ci sono due dichiarazioni assolutamente scoraggianti:&lt;br /&gt;
&lt;br /&gt;
* il riporto nel minore dell&#039;apertore (debolissima: &amp;quot;giocherei un parziale nella tua lunga, in cui ho mediamente due/tre cartine&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del proprio colore (anch&#039;essa estremamente scoraggiante: lunga e desiderio di giocare quel parziale, salvo plusvalori e fit dell&#039;apertore; tende a escludere visuale di manche: mediamente 4/5 punti, forse 6 brutti, e sei carte, cinque solo se annunciabili a livello due).&lt;br /&gt;
&lt;br /&gt;
Rimangono due dichiarazioni, i senza atout e il quarto colore. Per ognuno dei cinque casi:&lt;br /&gt;
&lt;br /&gt;
* la più economica è il &#039;&#039;&#039;relè&#039;&#039;&#039;, tendenzialmente forzante a manche, con 6/7+ punti;&lt;br /&gt;
&lt;br /&gt;
* la meno economica è il &#039;&#039;&#039;sign-off&#039;&#039;&#039; nel secondo colore detto dall&#039;apertore, sempre che lo abbia davvero.&lt;br /&gt;
&lt;br /&gt;
Quindi tre dichiarazioni deboli per arrestarsi al parziale in uno dei tre colori detti e un&#039;unica dichiarazione forzante per chiedere all&#039;apertore che tipo di rever possiede. Il relè si usa con tutte le mani con cui è legittimo affrontare almeno un tentativo di manche (sempre con 7+ punti, anche con 5/6 carini).&lt;br /&gt;
&lt;br /&gt;
Sequenze forzanti (relè):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2H(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il sign-off (secondo footnote della fonte) è un segnale scoraggiante di arresto: &amp;quot;se hai per davvero il secondo colore che hai detto, giocherei un parziale nel secondo colore; nessuna prospettiva di manche: semplicemente aspetto di riportarti nel minore lungo perché se per caso hai davvero il secondo colore può darsi che te lo possa appoggiare&amp;quot;. Il &amp;quot;gradino libero&amp;quot; è la più bassa dichiarazione a cui non sia già stato assegnato un significato particolare.&lt;br /&gt;
&lt;br /&gt;
== L&#039;apertore si descrive sul relè forzante ==&lt;br /&gt;
&lt;br /&gt;
Regole mnemoniche:&lt;br /&gt;
&lt;br /&gt;
* il primo gradino libero è sempre il &#039;&#039;&#039;Rever Reale&#039;&#039;&#039; (5/4);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;minore di apertura&#039;&#039;&#039; mostra sempre la monocolore minore;&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;secondo colore&#039;&#039;&#039; mostra sempre la 6-4;&lt;br /&gt;
&lt;br /&gt;
* l&#039;appoggio a &#039;&#039;&#039;tre&#039;&#039;&#039; nel colore del rispondente mostra la sbilanciata 18-20 di Gran Rever con fit quarto.&lt;br /&gt;
&lt;br /&gt;
Dopo il relè si dà per scontato che la coppia abbia la forza per la manche: nulla è più passabile sotto manche.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza fino al relè&lt;br /&gt;
! 1° gradino libero: RR 5/4&lt;br /&gt;
! Ripetizione del minore: monocolore&lt;br /&gt;
! Ripetizione del 2° colore: RR 6-4&lt;br /&gt;
! Appoggio a tre: sbilanciata 18-20 con 4 carte&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{cuori}} (6 fiori, 4 cuori)&lt;br /&gt;
| 3{{quadri}} (4 quadri)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (nella fonte segnalato con &amp;quot;(!!!)&amp;quot;)&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{picche}} (6 quadri, 4 picche)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{cuori}} (6 quadri, 4 cuori)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi dopo il relè ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: le cartine &amp;quot;x&amp;quot; della fonte sono state sostituite da carte basse non duplicate; il &amp;quot;10&amp;quot; è scritto T.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rever reale 5/4.&#039;&#039;&#039; Su 1{{quadri}} 1{{picche}} 2{{cuori}} il rispondente fa il relè 2SA; 3{{fiori}} (primo gradino libero) mostra il rever reale 5/4. Su 3{{picche}}, che allunga le picche, Sud appoggia; Nord capisce che la Q{{fiori}} è valore nullo e si accontenta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3C(RR) P 3S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQ6.AJ97.AK976.4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;JT872.Q85.Q2.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monocolore forte.&#039;&#039;&#039; Sud svela la monocolore con la ripetizione del minore, Nord dichiara 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 3C(monocolore) P 3NT&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A94.4.AQJ974&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q87.JT85.QJT2.K8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Il riporto è una replica debolissima.&#039;&#039;&#039; Secondo la fonte, il riporto significa: non vorrei giocare la manche neppure se hai il rever con fit quarto nel mio colore, a meno che tu non abbia &amp;quot;i serpenti in mano&amp;quot;. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;A4.K9.KQJ976.AJ5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J875.876.32.K876&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Relè debole (secondo gradino libero).&#039;&#039;&#039; Nord ha una sola prospettiva di manche, il rever fiori-picche; il 2SA è il secondo gradino libero, debole, mentre il relè sarebbe stato 2{{cuori}}. Sud ridichiara a seconda della sua mano e dice 3{{quadri}} solo con la 5/4 minore e punteggio minimo; con 20 direbbe 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2NT P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.A63.KQ76.AKJ54&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J9854.87.A985.87&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atout fissato nel nobile.&#039;&#039;&#039; Con il rever di appoggio quarto nel nobile l&#039;atout è inequivocabilmente fissato: il 4{{quadri}} è una cue bid, non un ripensamento sull&#039;atout. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQJ4.3.AQJ765.A2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3S P 4D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La mano di Nord riportata dalla fonte (♠K109xxx ♥xx ♦Kx ♣Qx) contiene soltanto 12 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minore dell&#039;apertore fissato a livello 4.&#039;&#039;&#039; Il minore dell&#039;apertore si può fissare dichiarandolo a livello 3 (comunque forzante) o a livello 4: inequivocabilmente atout fissato e visuale di slam. La mano limite si sarebbe espressa riportando a 3{{fiori}} subito, direttamente su 2{{cuori}}, evitando il relè.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 2NT P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A876.2.AQJ98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;43.KQ4.AJ83.K765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arresto a livello di riporto, ma Sud chiama manche.&#039;&#039;&#039; Nord frena con la ripetizione del proprio colore, ma Sud, con la mano di fit a picche, chiama comunque manche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AKJ2.A82.KQJ4.J9&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q98764.K75.2.763&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte il commento a questa sequenza contiene una formula poco chiara (&amp;quot;5 0 6??&amp;quot;); qui si riportano la sequenza e le mani con le cartine sostituite.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte descrive una sola versione della convenzione e non menziona varianti: non sono note varianti significative e per questo non esistono pagine di variante.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Splinter]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
I vincoli di distribuzione per il generatore di smazzate (campo shape_constraints) sono ricavati dalla trattazione di Marina Causa (Corso Preagonistica 2026); i range di punti sono indicativi.&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;03. Il Multirever, o Primo Rever Disponibile (PRD)&amp;quot; (PDF, 5 pagine). L&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Multirever&amp;diff=1979</id>
		<title>Multirever</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Multirever&amp;diff=1979"/>
		<updated>2026-10-20T07:17:12Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Aggiunti shape_constraints per il generatore di smazzate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Multirever}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di sviluppo]]&lt;br /&gt;
[[Categoria:Convenzioni di licita]]&lt;br /&gt;
&lt;br /&gt;
= Multirever =&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Multirever (Primo Rever Disponibile, PRD)&lt;br /&gt;
|tipologia=Sviluppo / Rever dell&#039;apertore (rever ambiguo, forzante)&lt;br /&gt;
|scopo=Dopo apertura in un minore e risposta di 1 a colore, dare un significato convenzionale al primo rever a colore nuovo disponibile dell&#039;apertore: una dichiarazione forzante e ambigua sulla tipologia della mano (sempre mano forte), chiarita dal rispondente con un relè e dalla successiva descrizione dell&#039;apertore&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} o 1{{quadri}}, risposta di uno a colore, nessun intervento avversario; la più economica tra le dichiarazioni di livello due a colore nuovo che rappresentino un rever. Le sequenze sono cinque: 1{{fiori}} 1{{quadri}} 2{{cuori}}; 1{{fiori}} 1{{cuori}} 2{{quadri}}; 1{{fiori}} 1{{picche}} 2{{quadri}}; 1{{quadri}} 1{{cuori}} 2{{picche}}; 1{{quadri}} 1{{picche}} 2{{cuori}}&lt;br /&gt;
|risposte=Il rispondente non passa mai (il secondo colore potrebbe essere vuoto). Tre repliche deboli: riporto nel minore di apertura (scoraggiantissima), ripetizione del proprio colore (scoraggiante), sign-off nel secondo colore dichiarato dall&#039;apertore (la meno economica tra senza atout e quarto colore). Una replica forzante: il relè, la più economica tra senza atout e quarto colore (7+ punti, tendenzialmente forzante a manche). Sul relè l&#039;apertore si descrive: primo gradino libero = rever reale 5/4; ripetizione del minore di apertura = monocolore minore; ripetizione del secondo colore = rever 6-4; appoggio a tre nel colore del rispondente = mano sbilanciata di 18-20 con fit quarto (Gran Rever)&lt;br /&gt;
|note=Ideatore non indicato nella fonte; descrizione secondo la trattazione di Marina Causa. Forzante senza eccezioni: l&#039;apertore può anche non avere il secondo colore, ma ha sempre almeno 5 carte nel minore di apertura. Non è convenzionale ogni rever dell&#039;apertore, solo il primo rever possibile; non vale su risposta di 1SA. Nessun intervento avversario. Non sono note varianti nella fonte&lt;br /&gt;
|tag_cc=rebid_rever&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
|shape_constraints = 1C-1D-2H mono: opener C:6+ hcp:18-21; responder D:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1D-2H RR 5/4: opener C:5 H:4 D:0-3 hcp:16-21; responder D:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1D-2H RR 6/4: opener C:6+ H:4 hcp:16-21; responder D:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1D-2H Gran rever: fit:D8+ opener C:5+ D:4 H:0-1 hcp:18-20; responder D:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1H-2D mono: opener C:6+ hcp:18-21; responder H:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1H-2D RR 5/4: opener C:5 D:4 H:0-3 hcp:16-21; responder H:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1H-2D RR 6/4: opener C:6+ D:4 hcp:16-21; responder H:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1H-2D Gran rever: fit:H8+ opener C:5+ H:4 D:0-1 hcp:18-20; responder H:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1S-2D mono: opener C:6+ hcp:18-21; responder S:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1S-2D RR 5/4: opener C:5 D:4 S:0-3 hcp:16-21; responder S:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1S-2D RR 6/4: opener C:6+ D:4 hcp:16-21; responder S:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1C-1S-2D Gran rever: fit:S8+ opener C:5+ S:4 D:0-1 hcp:18-20; responder S:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1D-1H-2S mono: opener D:6+ hcp:18-21; responder H:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1D-1H-2S RR 5/4: opener D:5 S:4 H:0-3 hcp:16-21; responder H:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1D-1H-2S RR 6/4: opener D:6+ S:4 hcp:16-21; responder H:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1D-1H-2S Gran rever: fit:H8+ opener D:5+ H:4 S:0-1 hcp:18-20; responder H:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1D-1S-2H mono: opener D:6+ hcp:18-21; responder S:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1D-1S-2H RR 5/4: opener D:5 H:4 S:0-3 hcp:16-21; responder S:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1D-1S-2H RR 6/4: opener D:6+ H:4 hcp:16-21; responder S:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11 // 1D-1S-2H Gran rever: fit:S8+ opener D:5+ S:4 H:0-1 hcp:18-20; responder S:4+ hcp:6+; opp1 hcp:0-11; opp2 hcp:0-11&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;Multirever&#039;&#039;&#039;, detto anche &#039;&#039;&#039;Primo Rever Disponibile (PRD)&#039;&#039;&#039;, è un rever &#039;&#039;ambiguo&#039;&#039; dell&#039;apertore che segue un&#039;apertura in un colore minore e una risposta di 1 a colore. Questa pagina riporta la trattazione di Marina Causa (vedi [[#Fonti|Fonti]]); l&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;br /&gt;
&lt;br /&gt;
== Idea ==&lt;br /&gt;
&lt;br /&gt;
Secondo la trattazione di Marina Causa, l&#039;ambiguità del Multirever non riguarda la forza (è sempre una mano forte) ma la &#039;&#039;&#039;tipologia della mano&#039;&#039;&#039;. La dichiarazione, per esempio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
non dice in modo univoco &amp;quot;ho una bicolore quadri-cuori di rovescio&amp;quot;: il colore espresso è solo una delle possibilità. È un rever &amp;quot;Multicolor&amp;quot; la cui fisionomia si chiarisce dopo. È &#039;&#039;&#039;tassativamente forzante&#039;&#039;&#039;: l&#039;apertore potrebbe non avere affatto il secondo colore, ma ha sempre almeno 5 carte nel primo.&lt;br /&gt;
&lt;br /&gt;
=== Lo spunto ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: nelle trascrizioni della fonte le cartine indicate con &amp;quot;x&amp;quot; sono state sostituite da carte basse non duplicate, perché il parser delle mani non accetta le &amp;quot;x&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Con questa mano (3 picche, 1 cuori, 3 quadri, 6 fiori) un buon naturalista apre di 1{{fiori}} e, se il compagno risponde 1 in un nobile, dichiara 2{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.KQ3.AKJ765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I motivi sono tre:&lt;br /&gt;
&lt;br /&gt;
* è l&#039;unico modo per tenere aperta la dichiarazione (un rever a colore nuovo è forzante anche nel liscione);&lt;br /&gt;
&lt;br /&gt;
* si evita di rischiare il passo e di mortificare la mano con il salto 1{{fiori}} - 3{{fiori}} (&amp;quot;uno poi tre&amp;quot; rappresenta piccoli rever di 15/17 punti);&lt;br /&gt;
&lt;br /&gt;
* il compagno, anche se dovesse preferire le quadri, sarà portato a rispettare le pressioni della mano forte, tanto più trattandosi di colori entrambi minori.&lt;br /&gt;
&lt;br /&gt;
Le quadri sono terze e il compagno non lo sa, ma poco importa, tanto è forzante. Allora &amp;quot;tanto vale codificarlo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Presupposti: quale rever è convenzionale ==&lt;br /&gt;
&lt;br /&gt;
Condizioni: apertura in un minore; risposta uno su uno a colore; nessun intervento avversario; la dichiarazione è il più economico dei possibili rever a colore nuovo. Non tutti i rever dell&#039;apertore sono convenzionali: lo è solo &amp;quot;il primo rever possibile&amp;quot;, cioè la più bassa dichiarazione di livello due che rappresenti un rever.&lt;br /&gt;
&lt;br /&gt;
Le sequenze convenzionali sono esattamente cinque (tre con partenza fiori, due con quadri):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restano rever &amp;quot;normali&amp;quot; (nulla cambia rispetto a prima) le sequenze seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è il primo rever possibile: il primo sarebbe 2{{cuori}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è una dichiarazione a colore nuovo (è un appoggio).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1NT P 2D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La convenzione non funziona su risposta di 1SA.&lt;br /&gt;
&lt;br /&gt;
== Quali mani ==&lt;br /&gt;
&lt;br /&gt;
Per cominciare, solo quattro possibilità:&lt;br /&gt;
&lt;br /&gt;
# la monocolore minore di 18/20 punti (che attualmente non ha collocazione);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever 5/4 (il Rever Reale, RR);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever ma distribuzione 6/4;&lt;br /&gt;
&lt;br /&gt;
# la mano sbilanciata di Gran Rever con fit quarto nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Il rispondente, per chiedere, usa come relè interrogativo la prima dichiarazione possibile che non corrisponda né alla ripetizione del seme di risposta né al riporto nel minore di apertura.&lt;br /&gt;
&lt;br /&gt;
Esempi di mani dell&#039;apertore nella sequenza&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* monocolore di quadri forte, più di &amp;quot;uno poi tre&amp;quot; ma non abbastanza per 2{{fiori}}; punteggio promesso 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AQ54.KQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale 5/4, punteggio 16-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.KQ54.AQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale con distribuzione 6/4 (&amp;quot;un asso in più&amp;quot;), punteggio 16-21: la fonte riporta ♠Kx ♥KJxx ♦AKQxxxx ♣x, che contiene 14 carte (probabile refuso); la mano non viene quindi mostrata. Si tratta di una mano con sei o sette quadri e quattro cuori;&lt;br /&gt;
&lt;br /&gt;
* rever nel nobile di risposta (picche), punteggio massimo 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQ54.2.AKJT7.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== La monocolore minore 18/20 ===&lt;br /&gt;
&lt;br /&gt;
È il tipo di mano che costituisce il vero vantaggio del PRD. Poter dare una sesta o settima di quella forza (a volte con 17) permette di &amp;quot;abbassare&amp;quot; la soglia della descrizione di una monocolore di piccolo rever: prima era inquadrata nel range 15/17, ora si potrà far onore anche alla mano di 14 molto belli. Per esempio è legittimo aprire di 1{{quadri}} e ripeterla a salto su risposta di un nobile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.AKQ765.983&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Il rever sbilanciato con fit quarto ===&lt;br /&gt;
&lt;br /&gt;
Crea un gradino espressivo in più per la bicolore di fit e amplia l&#039;arco di punteggio. Da adesso, nell&#039;ordine:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 3{{cuori}}&#039;&#039;&#039;: appoggio a livello 3. Può &amp;quot;scendere&amp;quot; a coprire anche l&#039;area dei 14/15 punti, con buone bicolori 5/4 e oltre, mai con la 4432. Campo di forza 14/16 (prima era 15/17); non tutti i 14, la fonte raccomanda solo quelli con cui sembra un peccato appoggiare soltanto a 2. Mano modello del punteggio minimo (&amp;quot;Distribuzione, mano pura, qualità dei punti. Se no, no.&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AK54.AKT97.853&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 4{{fiori}}&#039;&#039;&#039;: appoggio a manche, diretto (nessun singolo che piaccia descrivere) o con le varie splinter. Mano forte ma &amp;quot;di prese&amp;quot; piuttosto che &amp;quot;di punti&amp;quot;: una bella 6/4 o 7/4 di 15-16 punti con 8-9 vincenti teoriche. La mano di esempio della fonte (♠xxx ♥AQJx ♦AKJ10xx ♣-) contiene 14 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 2{{picche}}(*)&#039;&#039;&#039;: il Multirever. Un rovescio fatto di &amp;quot;punti&amp;quot;, troppi per una delle opzioni precedenti ma troppo pochi per l&#039;apertura di 2{{fiori}}; mediamente una mano di circa 18, 19, 20.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per confronto, la fonte riporta la sequenza seguente come &amp;quot;il massimo immaginabile&amp;quot;: una mano che non ha voluto rischiare il passo, perché può far manche da sola o con un re o una dama al posto giusto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rever reale 5/4 e rever reale 6/4 ===&lt;br /&gt;
&lt;br /&gt;
Sono differenziati perché una mano con una sesta ha una affrancabile in più e con vie naturali sarebbe difficile descriverla: una licita per la 5/4 e una per la 6/4 o 7/4.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente ==&lt;br /&gt;
&lt;br /&gt;
Il Passo è impensabile (il secondo colore potrebbe essere vuoto). Per ognuna delle cinque sequenze le repliche possibili del rispondente sono le seguenti; la seconda dichiarazione elencata come &amp;quot;relè&amp;quot; è quella forzante.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza&lt;br /&gt;
! Repliche del rispondente&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (relè), 2SA, 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}}, 2{{picche}} (relè), 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}} (relè), 2{{picche}}, 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA (relè), 3{{fiori}}, 3{{quadri}}, 3{{cuori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}}, 2SA (relè), 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ognuna ci sono due dichiarazioni assolutamente scoraggianti:&lt;br /&gt;
&lt;br /&gt;
* il riporto nel minore dell&#039;apertore (debolissima: &amp;quot;giocherei un parziale nella tua lunga, in cui ho mediamente due/tre cartine&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del proprio colore (anch&#039;essa estremamente scoraggiante: lunga e desiderio di giocare quel parziale, salvo plusvalori e fit dell&#039;apertore; tende a escludere visuale di manche: mediamente 4/5 punti, forse 6 brutti, e sei carte, cinque solo se annunciabili a livello due).&lt;br /&gt;
&lt;br /&gt;
Rimangono due dichiarazioni, i senza atout e il quarto colore. Per ognuno dei cinque casi:&lt;br /&gt;
&lt;br /&gt;
* la più economica è il &#039;&#039;&#039;relè&#039;&#039;&#039;, tendenzialmente forzante a manche, con 6/7+ punti;&lt;br /&gt;
&lt;br /&gt;
* la meno economica è il &#039;&#039;&#039;sign-off&#039;&#039;&#039; nel secondo colore detto dall&#039;apertore, sempre che lo abbia davvero.&lt;br /&gt;
&lt;br /&gt;
Quindi tre dichiarazioni deboli per arrestarsi al parziale in uno dei tre colori detti e un&#039;unica dichiarazione forzante per chiedere all&#039;apertore che tipo di rever possiede. Il relè si usa con tutte le mani con cui è legittimo affrontare almeno un tentativo di manche (sempre con 7+ punti, anche con 5/6 carini).&lt;br /&gt;
&lt;br /&gt;
Sequenze forzanti (relè):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2H(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il sign-off (secondo footnote della fonte) è un segnale scoraggiante di arresto: &amp;quot;se hai per davvero il secondo colore che hai detto, giocherei un parziale nel secondo colore; nessuna prospettiva di manche: semplicemente aspetto di riportarti nel minore lungo perché se per caso hai davvero il secondo colore può darsi che te lo possa appoggiare&amp;quot;. Il &amp;quot;gradino libero&amp;quot; è la più bassa dichiarazione a cui non sia già stato assegnato un significato particolare.&lt;br /&gt;
&lt;br /&gt;
== L&#039;apertore si descrive sul relè forzante ==&lt;br /&gt;
&lt;br /&gt;
Regole mnemoniche:&lt;br /&gt;
&lt;br /&gt;
* il primo gradino libero è sempre il &#039;&#039;&#039;Rever Reale&#039;&#039;&#039; (5/4);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;minore di apertura&#039;&#039;&#039; mostra sempre la monocolore minore;&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;secondo colore&#039;&#039;&#039; mostra sempre la 6-4;&lt;br /&gt;
&lt;br /&gt;
* l&#039;appoggio a &#039;&#039;&#039;tre&#039;&#039;&#039; nel colore del rispondente mostra la sbilanciata 18-20 di Gran Rever con fit quarto.&lt;br /&gt;
&lt;br /&gt;
Dopo il relè si dà per scontato che la coppia abbia la forza per la manche: nulla è più passabile sotto manche.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza fino al relè&lt;br /&gt;
! 1° gradino libero: RR 5/4&lt;br /&gt;
! Ripetizione del minore: monocolore&lt;br /&gt;
! Ripetizione del 2° colore: RR 6-4&lt;br /&gt;
! Appoggio a tre: sbilanciata 18-20 con 4 carte&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{cuori}} (6 fiori, 4 cuori)&lt;br /&gt;
| 3{{quadri}} (4 quadri)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (nella fonte segnalato con &amp;quot;(!!!)&amp;quot;)&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{picche}} (6 quadri, 4 picche)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{cuori}} (6 quadri, 4 cuori)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi dopo il relè ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: le cartine &amp;quot;x&amp;quot; della fonte sono state sostituite da carte basse non duplicate; il &amp;quot;10&amp;quot; è scritto T.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rever reale 5/4.&#039;&#039;&#039; Su 1{{quadri}} 1{{picche}} 2{{cuori}} il rispondente fa il relè 2SA; 3{{fiori}} (primo gradino libero) mostra il rever reale 5/4. Su 3{{picche}}, che allunga le picche, Sud appoggia; Nord capisce che la Q{{fiori}} è valore nullo e si accontenta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3C(RR) P 3S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQ6.AJ97.AK976.4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;JT872.Q85.Q2.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monocolore forte.&#039;&#039;&#039; Sud svela la monocolore con la ripetizione del minore, Nord dichiara 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 3C(monocolore) P 3NT&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A94.4.AQJ974&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q87.JT85.QJT2.K8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Il riporto è una replica debolissima.&#039;&#039;&#039; Secondo la fonte, il riporto significa: non vorrei giocare la manche neppure se hai il rever con fit quarto nel mio colore, a meno che tu non abbia &amp;quot;i serpenti in mano&amp;quot;. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;A4.K9.KQJ976.AJ5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J875.876.32.K876&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Relè debole (secondo gradino libero).&#039;&#039;&#039; Nord ha una sola prospettiva di manche, il rever fiori-picche; il 2SA è il secondo gradino libero, debole, mentre il relè sarebbe stato 2{{cuori}}. Sud ridichiara a seconda della sua mano e dice 3{{quadri}} solo con la 5/4 minore e punteggio minimo; con 20 direbbe 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2NT P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.A63.KQ76.AKJ54&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J9854.87.A985.87&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atout fissato nel nobile.&#039;&#039;&#039; Con il rever di appoggio quarto nel nobile l&#039;atout è inequivocabilmente fissato: il 4{{quadri}} è una cue bid, non un ripensamento sull&#039;atout. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQJ4.3.AQJ765.A2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3S P 4D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La mano di Nord riportata dalla fonte (♠K109xxx ♥xx ♦Kx ♣Qx) contiene soltanto 12 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minore dell&#039;apertore fissato a livello 4.&#039;&#039;&#039; Il minore dell&#039;apertore si può fissare dichiarandolo a livello 3 (comunque forzante) o a livello 4: inequivocabilmente atout fissato e visuale di slam. La mano limite si sarebbe espressa riportando a 3{{fiori}} subito, direttamente su 2{{cuori}}, evitando il relè.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 2NT P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A876.2.AQJ98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;43.KQ4.AJ83.K765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arresto a livello di riporto, ma Sud chiama manche.&#039;&#039;&#039; Nord frena con la ripetizione del proprio colore, ma Sud, con la mano di fit a picche, chiama comunque manche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AKJ2.A82.KQJ4.J9&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q98764.K75.2.763&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte il commento a questa sequenza contiene una formula poco chiara (&amp;quot;5 0 6??&amp;quot;); qui si riportano la sequenza e le mani con le cartine sostituite.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte descrive una sola versione della convenzione e non menziona varianti: non sono note varianti significative e per questo non esistono pagine di variante.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Splinter]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
I vincoli di distribuzione per il generatore di smazzate (campo shape_constraints) sono ricavati dalla trattazione di Marina Causa (Corso Preagonistica 2026); i range di punti sono indicativi.&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;03. Il Multirever, o Primo Rever Disponibile (PRD)&amp;quot; (PDF, 5 pagine). L&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Multirever&amp;diff=1978</id>
		<title>Multirever</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Multirever&amp;diff=1978"/>
		<updated>2026-10-20T07:09:12Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Aggiunto tag_cc rebid_rever&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Multirever}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di sviluppo]]&lt;br /&gt;
[[Categoria:Convenzioni di licita]]&lt;br /&gt;
&lt;br /&gt;
= Multirever =&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Multirever (Primo Rever Disponibile, PRD)&lt;br /&gt;
|tipologia=Sviluppo / Rever dell&#039;apertore (rever ambiguo, forzante)&lt;br /&gt;
|scopo=Dopo apertura in un minore e risposta di 1 a colore, dare un significato convenzionale al primo rever a colore nuovo disponibile dell&#039;apertore: una dichiarazione forzante e ambigua sulla tipologia della mano (sempre mano forte), chiarita dal rispondente con un relè e dalla successiva descrizione dell&#039;apertore&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} o 1{{quadri}}, risposta di uno a colore, nessun intervento avversario; la più economica tra le dichiarazioni di livello due a colore nuovo che rappresentino un rever. Le sequenze sono cinque: 1{{fiori}} 1{{quadri}} 2{{cuori}}; 1{{fiori}} 1{{cuori}} 2{{quadri}}; 1{{fiori}} 1{{picche}} 2{{quadri}}; 1{{quadri}} 1{{cuori}} 2{{picche}}; 1{{quadri}} 1{{picche}} 2{{cuori}}&lt;br /&gt;
|risposte=Il rispondente non passa mai (il secondo colore potrebbe essere vuoto). Tre repliche deboli: riporto nel minore di apertura (scoraggiantissima), ripetizione del proprio colore (scoraggiante), sign-off nel secondo colore dichiarato dall&#039;apertore (la meno economica tra senza atout e quarto colore). Una replica forzante: il relè, la più economica tra senza atout e quarto colore (7+ punti, tendenzialmente forzante a manche). Sul relè l&#039;apertore si descrive: primo gradino libero = rever reale 5/4; ripetizione del minore di apertura = monocolore minore; ripetizione del secondo colore = rever 6-4; appoggio a tre nel colore del rispondente = mano sbilanciata di 18-20 con fit quarto (Gran Rever)&lt;br /&gt;
|note=Ideatore non indicato nella fonte; descrizione secondo la trattazione di Marina Causa. Forzante senza eccezioni: l&#039;apertore può anche non avere il secondo colore, ma ha sempre almeno 5 carte nel minore di apertura. Non è convenzionale ogni rever dell&#039;apertore, solo il primo rever possibile; non vale su risposta di 1SA. Nessun intervento avversario. Non sono note varianti nella fonte&lt;br /&gt;
|tag_cc=rebid_rever&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;Multirever&#039;&#039;&#039;, detto anche &#039;&#039;&#039;Primo Rever Disponibile (PRD)&#039;&#039;&#039;, è un rever &#039;&#039;ambiguo&#039;&#039; dell&#039;apertore che segue un&#039;apertura in un colore minore e una risposta di 1 a colore. Questa pagina riporta la trattazione di Marina Causa (vedi [[#Fonti|Fonti]]); l&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;br /&gt;
&lt;br /&gt;
== Idea ==&lt;br /&gt;
&lt;br /&gt;
Secondo la trattazione di Marina Causa, l&#039;ambiguità del Multirever non riguarda la forza (è sempre una mano forte) ma la &#039;&#039;&#039;tipologia della mano&#039;&#039;&#039;. La dichiarazione, per esempio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
non dice in modo univoco &amp;quot;ho una bicolore quadri-cuori di rovescio&amp;quot;: il colore espresso è solo una delle possibilità. È un rever &amp;quot;Multicolor&amp;quot; la cui fisionomia si chiarisce dopo. È &#039;&#039;&#039;tassativamente forzante&#039;&#039;&#039;: l&#039;apertore potrebbe non avere affatto il secondo colore, ma ha sempre almeno 5 carte nel primo.&lt;br /&gt;
&lt;br /&gt;
=== Lo spunto ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: nelle trascrizioni della fonte le cartine indicate con &amp;quot;x&amp;quot; sono state sostituite da carte basse non duplicate, perché il parser delle mani non accetta le &amp;quot;x&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Con questa mano (3 picche, 1 cuori, 3 quadri, 6 fiori) un buon naturalista apre di 1{{fiori}} e, se il compagno risponde 1 in un nobile, dichiara 2{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.KQ3.AKJ765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I motivi sono tre:&lt;br /&gt;
&lt;br /&gt;
* è l&#039;unico modo per tenere aperta la dichiarazione (un rever a colore nuovo è forzante anche nel liscione);&lt;br /&gt;
&lt;br /&gt;
* si evita di rischiare il passo e di mortificare la mano con il salto 1{{fiori}} - 3{{fiori}} (&amp;quot;uno poi tre&amp;quot; rappresenta piccoli rever di 15/17 punti);&lt;br /&gt;
&lt;br /&gt;
* il compagno, anche se dovesse preferire le quadri, sarà portato a rispettare le pressioni della mano forte, tanto più trattandosi di colori entrambi minori.&lt;br /&gt;
&lt;br /&gt;
Le quadri sono terze e il compagno non lo sa, ma poco importa, tanto è forzante. Allora &amp;quot;tanto vale codificarlo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Presupposti: quale rever è convenzionale ==&lt;br /&gt;
&lt;br /&gt;
Condizioni: apertura in un minore; risposta uno su uno a colore; nessun intervento avversario; la dichiarazione è il più economico dei possibili rever a colore nuovo. Non tutti i rever dell&#039;apertore sono convenzionali: lo è solo &amp;quot;il primo rever possibile&amp;quot;, cioè la più bassa dichiarazione di livello due che rappresenti un rever.&lt;br /&gt;
&lt;br /&gt;
Le sequenze convenzionali sono esattamente cinque (tre con partenza fiori, due con quadri):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restano rever &amp;quot;normali&amp;quot; (nulla cambia rispetto a prima) le sequenze seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è il primo rever possibile: il primo sarebbe 2{{cuori}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è una dichiarazione a colore nuovo (è un appoggio).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1NT P 2D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La convenzione non funziona su risposta di 1SA.&lt;br /&gt;
&lt;br /&gt;
== Quali mani ==&lt;br /&gt;
&lt;br /&gt;
Per cominciare, solo quattro possibilità:&lt;br /&gt;
&lt;br /&gt;
# la monocolore minore di 18/20 punti (che attualmente non ha collocazione);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever 5/4 (il Rever Reale, RR);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever ma distribuzione 6/4;&lt;br /&gt;
&lt;br /&gt;
# la mano sbilanciata di Gran Rever con fit quarto nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Il rispondente, per chiedere, usa come relè interrogativo la prima dichiarazione possibile che non corrisponda né alla ripetizione del seme di risposta né al riporto nel minore di apertura.&lt;br /&gt;
&lt;br /&gt;
Esempi di mani dell&#039;apertore nella sequenza&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* monocolore di quadri forte, più di &amp;quot;uno poi tre&amp;quot; ma non abbastanza per 2{{fiori}}; punteggio promesso 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AQ54.KQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale 5/4, punteggio 16-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.KQ54.AQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale con distribuzione 6/4 (&amp;quot;un asso in più&amp;quot;), punteggio 16-21: la fonte riporta ♠Kx ♥KJxx ♦AKQxxxx ♣x, che contiene 14 carte (probabile refuso); la mano non viene quindi mostrata. Si tratta di una mano con sei o sette quadri e quattro cuori;&lt;br /&gt;
&lt;br /&gt;
* rever nel nobile di risposta (picche), punteggio massimo 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQ54.2.AKJT7.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== La monocolore minore 18/20 ===&lt;br /&gt;
&lt;br /&gt;
È il tipo di mano che costituisce il vero vantaggio del PRD. Poter dare una sesta o settima di quella forza (a volte con 17) permette di &amp;quot;abbassare&amp;quot; la soglia della descrizione di una monocolore di piccolo rever: prima era inquadrata nel range 15/17, ora si potrà far onore anche alla mano di 14 molto belli. Per esempio è legittimo aprire di 1{{quadri}} e ripeterla a salto su risposta di un nobile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.AKQ765.983&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Il rever sbilanciato con fit quarto ===&lt;br /&gt;
&lt;br /&gt;
Crea un gradino espressivo in più per la bicolore di fit e amplia l&#039;arco di punteggio. Da adesso, nell&#039;ordine:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 3{{cuori}}&#039;&#039;&#039;: appoggio a livello 3. Può &amp;quot;scendere&amp;quot; a coprire anche l&#039;area dei 14/15 punti, con buone bicolori 5/4 e oltre, mai con la 4432. Campo di forza 14/16 (prima era 15/17); non tutti i 14, la fonte raccomanda solo quelli con cui sembra un peccato appoggiare soltanto a 2. Mano modello del punteggio minimo (&amp;quot;Distribuzione, mano pura, qualità dei punti. Se no, no.&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AK54.AKT97.853&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 4{{fiori}}&#039;&#039;&#039;: appoggio a manche, diretto (nessun singolo che piaccia descrivere) o con le varie splinter. Mano forte ma &amp;quot;di prese&amp;quot; piuttosto che &amp;quot;di punti&amp;quot;: una bella 6/4 o 7/4 di 15-16 punti con 8-9 vincenti teoriche. La mano di esempio della fonte (♠xxx ♥AQJx ♦AKJ10xx ♣-) contiene 14 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 2{{picche}}(*)&#039;&#039;&#039;: il Multirever. Un rovescio fatto di &amp;quot;punti&amp;quot;, troppi per una delle opzioni precedenti ma troppo pochi per l&#039;apertura di 2{{fiori}}; mediamente una mano di circa 18, 19, 20.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per confronto, la fonte riporta la sequenza seguente come &amp;quot;il massimo immaginabile&amp;quot;: una mano che non ha voluto rischiare il passo, perché può far manche da sola o con un re o una dama al posto giusto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rever reale 5/4 e rever reale 6/4 ===&lt;br /&gt;
&lt;br /&gt;
Sono differenziati perché una mano con una sesta ha una affrancabile in più e con vie naturali sarebbe difficile descriverla: una licita per la 5/4 e una per la 6/4 o 7/4.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente ==&lt;br /&gt;
&lt;br /&gt;
Il Passo è impensabile (il secondo colore potrebbe essere vuoto). Per ognuna delle cinque sequenze le repliche possibili del rispondente sono le seguenti; la seconda dichiarazione elencata come &amp;quot;relè&amp;quot; è quella forzante.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza&lt;br /&gt;
! Repliche del rispondente&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (relè), 2SA, 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}}, 2{{picche}} (relè), 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}} (relè), 2{{picche}}, 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA (relè), 3{{fiori}}, 3{{quadri}}, 3{{cuori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}}, 2SA (relè), 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ognuna ci sono due dichiarazioni assolutamente scoraggianti:&lt;br /&gt;
&lt;br /&gt;
* il riporto nel minore dell&#039;apertore (debolissima: &amp;quot;giocherei un parziale nella tua lunga, in cui ho mediamente due/tre cartine&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del proprio colore (anch&#039;essa estremamente scoraggiante: lunga e desiderio di giocare quel parziale, salvo plusvalori e fit dell&#039;apertore; tende a escludere visuale di manche: mediamente 4/5 punti, forse 6 brutti, e sei carte, cinque solo se annunciabili a livello due).&lt;br /&gt;
&lt;br /&gt;
Rimangono due dichiarazioni, i senza atout e il quarto colore. Per ognuno dei cinque casi:&lt;br /&gt;
&lt;br /&gt;
* la più economica è il &#039;&#039;&#039;relè&#039;&#039;&#039;, tendenzialmente forzante a manche, con 6/7+ punti;&lt;br /&gt;
&lt;br /&gt;
* la meno economica è il &#039;&#039;&#039;sign-off&#039;&#039;&#039; nel secondo colore detto dall&#039;apertore, sempre che lo abbia davvero.&lt;br /&gt;
&lt;br /&gt;
Quindi tre dichiarazioni deboli per arrestarsi al parziale in uno dei tre colori detti e un&#039;unica dichiarazione forzante per chiedere all&#039;apertore che tipo di rever possiede. Il relè si usa con tutte le mani con cui è legittimo affrontare almeno un tentativo di manche (sempre con 7+ punti, anche con 5/6 carini).&lt;br /&gt;
&lt;br /&gt;
Sequenze forzanti (relè):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2H(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il sign-off (secondo footnote della fonte) è un segnale scoraggiante di arresto: &amp;quot;se hai per davvero il secondo colore che hai detto, giocherei un parziale nel secondo colore; nessuna prospettiva di manche: semplicemente aspetto di riportarti nel minore lungo perché se per caso hai davvero il secondo colore può darsi che te lo possa appoggiare&amp;quot;. Il &amp;quot;gradino libero&amp;quot; è la più bassa dichiarazione a cui non sia già stato assegnato un significato particolare.&lt;br /&gt;
&lt;br /&gt;
== L&#039;apertore si descrive sul relè forzante ==&lt;br /&gt;
&lt;br /&gt;
Regole mnemoniche:&lt;br /&gt;
&lt;br /&gt;
* il primo gradino libero è sempre il &#039;&#039;&#039;Rever Reale&#039;&#039;&#039; (5/4);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;minore di apertura&#039;&#039;&#039; mostra sempre la monocolore minore;&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;secondo colore&#039;&#039;&#039; mostra sempre la 6-4;&lt;br /&gt;
&lt;br /&gt;
* l&#039;appoggio a &#039;&#039;&#039;tre&#039;&#039;&#039; nel colore del rispondente mostra la sbilanciata 18-20 di Gran Rever con fit quarto.&lt;br /&gt;
&lt;br /&gt;
Dopo il relè si dà per scontato che la coppia abbia la forza per la manche: nulla è più passabile sotto manche.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza fino al relè&lt;br /&gt;
! 1° gradino libero: RR 5/4&lt;br /&gt;
! Ripetizione del minore: monocolore&lt;br /&gt;
! Ripetizione del 2° colore: RR 6-4&lt;br /&gt;
! Appoggio a tre: sbilanciata 18-20 con 4 carte&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{cuori}} (6 fiori, 4 cuori)&lt;br /&gt;
| 3{{quadri}} (4 quadri)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (nella fonte segnalato con &amp;quot;(!!!)&amp;quot;)&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{picche}} (6 quadri, 4 picche)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{cuori}} (6 quadri, 4 cuori)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi dopo il relè ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: le cartine &amp;quot;x&amp;quot; della fonte sono state sostituite da carte basse non duplicate; il &amp;quot;10&amp;quot; è scritto T.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rever reale 5/4.&#039;&#039;&#039; Su 1{{quadri}} 1{{picche}} 2{{cuori}} il rispondente fa il relè 2SA; 3{{fiori}} (primo gradino libero) mostra il rever reale 5/4. Su 3{{picche}}, che allunga le picche, Sud appoggia; Nord capisce che la Q{{fiori}} è valore nullo e si accontenta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3C(RR) P 3S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQ6.AJ97.AK976.4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;JT872.Q85.Q2.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monocolore forte.&#039;&#039;&#039; Sud svela la monocolore con la ripetizione del minore, Nord dichiara 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 3C(monocolore) P 3NT&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A94.4.AQJ974&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q87.JT85.QJT2.K8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Il riporto è una replica debolissima.&#039;&#039;&#039; Secondo la fonte, il riporto significa: non vorrei giocare la manche neppure se hai il rever con fit quarto nel mio colore, a meno che tu non abbia &amp;quot;i serpenti in mano&amp;quot;. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;A4.K9.KQJ976.AJ5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J875.876.32.K876&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Relè debole (secondo gradino libero).&#039;&#039;&#039; Nord ha una sola prospettiva di manche, il rever fiori-picche; il 2SA è il secondo gradino libero, debole, mentre il relè sarebbe stato 2{{cuori}}. Sud ridichiara a seconda della sua mano e dice 3{{quadri}} solo con la 5/4 minore e punteggio minimo; con 20 direbbe 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2NT P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.A63.KQ76.AKJ54&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J9854.87.A985.87&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atout fissato nel nobile.&#039;&#039;&#039; Con il rever di appoggio quarto nel nobile l&#039;atout è inequivocabilmente fissato: il 4{{quadri}} è una cue bid, non un ripensamento sull&#039;atout. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQJ4.3.AQJ765.A2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3S P 4D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La mano di Nord riportata dalla fonte (♠K109xxx ♥xx ♦Kx ♣Qx) contiene soltanto 12 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minore dell&#039;apertore fissato a livello 4.&#039;&#039;&#039; Il minore dell&#039;apertore si può fissare dichiarandolo a livello 3 (comunque forzante) o a livello 4: inequivocabilmente atout fissato e visuale di slam. La mano limite si sarebbe espressa riportando a 3{{fiori}} subito, direttamente su 2{{cuori}}, evitando il relè.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 2NT P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A876.2.AQJ98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;43.KQ4.AJ83.K765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arresto a livello di riporto, ma Sud chiama manche.&#039;&#039;&#039; Nord frena con la ripetizione del proprio colore, ma Sud, con la mano di fit a picche, chiama comunque manche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AKJ2.A82.KQJ4.J9&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q98764.K75.2.763&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte il commento a questa sequenza contiene una formula poco chiara (&amp;quot;5 0 6??&amp;quot;); qui si riportano la sequenza e le mani con le cartine sostituite.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte descrive una sola versione della convenzione e non menziona varianti: non sono note varianti significative e per questo non esistono pagine di variante.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Splinter]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;03. Il Multirever, o Primo Rever Disponibile (PRD)&amp;quot; (PDF, 5 pagine). L&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Multirever&amp;diff=1977</id>
		<title>Multirever</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Multirever&amp;diff=1977"/>
		<updated>2026-10-20T07:05:28Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Creazione pagina Multirever (PRD) da dispensa di Marina Causa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DEFAULTSORT:Multirever}}&lt;br /&gt;
[[Categoria:Convenzioni]]&lt;br /&gt;
[[Categoria:Convenzioni di sviluppo]]&lt;br /&gt;
[[Categoria:Convenzioni di licita]]&lt;br /&gt;
&lt;br /&gt;
= Multirever =&lt;br /&gt;
&lt;br /&gt;
{{Convenzione&lt;br /&gt;
|nome=Multirever (Primo Rever Disponibile, PRD)&lt;br /&gt;
|tipologia=Sviluppo / Rever dell&#039;apertore (rever ambiguo, forzante)&lt;br /&gt;
|scopo=Dopo apertura in un minore e risposta di 1 a colore, dare un significato convenzionale al primo rever a colore nuovo disponibile dell&#039;apertore: una dichiarazione forzante e ambigua sulla tipologia della mano (sempre mano forte), chiarita dal rispondente con un relè e dalla successiva descrizione dell&#039;apertore&lt;br /&gt;
|trigger=Apertura di 1{{fiori}} o 1{{quadri}}, risposta di uno a colore, nessun intervento avversario; la più economica tra le dichiarazioni di livello due a colore nuovo che rappresentino un rever. Le sequenze sono cinque: 1{{fiori}} 1{{quadri}} 2{{cuori}}; 1{{fiori}} 1{{cuori}} 2{{quadri}}; 1{{fiori}} 1{{picche}} 2{{quadri}}; 1{{quadri}} 1{{cuori}} 2{{picche}}; 1{{quadri}} 1{{picche}} 2{{cuori}}&lt;br /&gt;
|risposte=Il rispondente non passa mai (il secondo colore potrebbe essere vuoto). Tre repliche deboli: riporto nel minore di apertura (scoraggiantissima), ripetizione del proprio colore (scoraggiante), sign-off nel secondo colore dichiarato dall&#039;apertore (la meno economica tra senza atout e quarto colore). Una replica forzante: il relè, la più economica tra senza atout e quarto colore (7+ punti, tendenzialmente forzante a manche). Sul relè l&#039;apertore si descrive: primo gradino libero = rever reale 5/4; ripetizione del minore di apertura = monocolore minore; ripetizione del secondo colore = rever 6-4; appoggio a tre nel colore del rispondente = mano sbilanciata di 18-20 con fit quarto (Gran Rever)&lt;br /&gt;
|note=Ideatore non indicato nella fonte; descrizione secondo la trattazione di Marina Causa. Forzante senza eccezioni: l&#039;apertore può anche non avere il secondo colore, ma ha sempre almeno 5 carte nel minore di apertura. Non è convenzionale ogni rever dell&#039;apertore, solo il primo rever possibile; non vale su risposta di 1SA. Nessun intervento avversario. Non sono note varianti nella fonte&lt;br /&gt;
|tag_cc=&lt;br /&gt;
|tag_sistema=naturale&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il &#039;&#039;&#039;Multirever&#039;&#039;&#039;, detto anche &#039;&#039;&#039;Primo Rever Disponibile (PRD)&#039;&#039;&#039;, è un rever &#039;&#039;ambiguo&#039;&#039; dell&#039;apertore che segue un&#039;apertura in un colore minore e una risposta di 1 a colore. Questa pagina riporta la trattazione di Marina Causa (vedi [[#Fonti|Fonti]]); l&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;br /&gt;
&lt;br /&gt;
== Idea ==&lt;br /&gt;
&lt;br /&gt;
Secondo la trattazione di Marina Causa, l&#039;ambiguità del Multirever non riguarda la forza (è sempre una mano forte) ma la &#039;&#039;&#039;tipologia della mano&#039;&#039;&#039;. La dichiarazione, per esempio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
non dice in modo univoco &amp;quot;ho una bicolore quadri-cuori di rovescio&amp;quot;: il colore espresso è solo una delle possibilità. È un rever &amp;quot;Multicolor&amp;quot; la cui fisionomia si chiarisce dopo. È &#039;&#039;&#039;tassativamente forzante&#039;&#039;&#039;: l&#039;apertore potrebbe non avere affatto il secondo colore, ma ha sempre almeno 5 carte nel primo.&lt;br /&gt;
&lt;br /&gt;
=== Lo spunto ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: nelle trascrizioni della fonte le cartine indicate con &amp;quot;x&amp;quot; sono state sostituite da carte basse non duplicate, perché il parser delle mani non accetta le &amp;quot;x&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Con questa mano (3 picche, 1 cuori, 3 quadri, 6 fiori) un buon naturalista apre di 1{{fiori}} e, se il compagno risponde 1 in un nobile, dichiara 2{{quadri}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.KQ3.AKJ765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I motivi sono tre:&lt;br /&gt;
&lt;br /&gt;
* è l&#039;unico modo per tenere aperta la dichiarazione (un rever a colore nuovo è forzante anche nel liscione);&lt;br /&gt;
&lt;br /&gt;
* si evita di rischiare il passo e di mortificare la mano con il salto 1{{fiori}} - 3{{fiori}} (&amp;quot;uno poi tre&amp;quot; rappresenta piccoli rever di 15/17 punti);&lt;br /&gt;
&lt;br /&gt;
* il compagno, anche se dovesse preferire le quadri, sarà portato a rispettare le pressioni della mano forte, tanto più trattandosi di colori entrambi minori.&lt;br /&gt;
&lt;br /&gt;
Le quadri sono terze e il compagno non lo sa, ma poco importa, tanto è forzante. Allora &amp;quot;tanto vale codificarlo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Presupposti: quale rever è convenzionale ==&lt;br /&gt;
&lt;br /&gt;
Condizioni: apertura in un minore; risposta uno su uno a colore; nessun intervento avversario; la dichiarazione è il più economico dei possibili rever a colore nuovo. Non tutti i rever dell&#039;apertore sono convenzionali: lo è solo &amp;quot;il primo rever possibile&amp;quot;, cioè la più bassa dichiarazione di livello due che rappresenti un rever.&lt;br /&gt;
&lt;br /&gt;
Le sequenze convenzionali sono esattamente cinque (tre con partenza fiori, due con quadri):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restano rever &amp;quot;normali&amp;quot; (nulla cambia rispetto a prima) le sequenze seguenti:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è il primo rever possibile: il primo sarebbe 2{{cuori}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Non è una dichiarazione a colore nuovo (è un appoggio).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1NT P 2D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La convenzione non funziona su risposta di 1SA.&lt;br /&gt;
&lt;br /&gt;
== Quali mani ==&lt;br /&gt;
&lt;br /&gt;
Per cominciare, solo quattro possibilità:&lt;br /&gt;
&lt;br /&gt;
# la monocolore minore di 18/20 punti (che attualmente non ha collocazione);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever 5/4 (il Rever Reale, RR);&lt;br /&gt;
&lt;br /&gt;
# la mano con vero rever ma distribuzione 6/4;&lt;br /&gt;
&lt;br /&gt;
# la mano sbilanciata di Gran Rever con fit quarto nel nobile di risposta.&lt;br /&gt;
&lt;br /&gt;
Il rispondente, per chiedere, usa come relè interrogativo la prima dichiarazione possibile che non corrisponda né alla ripetizione del seme di risposta né al riporto nel minore di apertura.&lt;br /&gt;
&lt;br /&gt;
Esempi di mani dell&#039;apertore nella sequenza&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* monocolore di quadri forte, più di &amp;quot;uno poi tre&amp;quot; ma non abbastanza per 2{{fiori}}; punteggio promesso 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AQ54.KQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale 5/4, punteggio 16-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.KQ54.AQJ76.A83&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* rever reale con distribuzione 6/4 (&amp;quot;un asso in più&amp;quot;), punteggio 16-21: la fonte riporta ♠Kx ♥KJxx ♦AKQxxxx ♣x, che contiene 14 carte (probabile refuso); la mano non viene quindi mostrata. Si tratta di una mano con sei o sette quadri e quattro cuori;&lt;br /&gt;
&lt;br /&gt;
* rever nel nobile di risposta (picche), punteggio massimo 18-21 (13 carte):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;KQ54.2.AKJT7.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== La monocolore minore 18/20 ===&lt;br /&gt;
&lt;br /&gt;
È il tipo di mano che costituisce il vero vantaggio del PRD. Poter dare una sesta o settima di quella forza (a volte con 17) permette di &amp;quot;abbassare&amp;quot; la soglia della descrizione di una monocolore di piccolo rever: prima era inquadrata nel range 15/17, ora si potrà far onore anche alla mano di 14 molto belli. Per esempio è legittimo aprire di 1{{quadri}} e ripeterla a salto su risposta di un nobile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AJ4.2.AKQ765.983&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Il rever sbilanciato con fit quarto ===&lt;br /&gt;
&lt;br /&gt;
Crea un gradino espressivo in più per la bicolore di fit e amplia l&#039;arco di punteggio. Da adesso, nell&#039;ordine:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 3{{cuori}}&#039;&#039;&#039;: appoggio a livello 3. Può &amp;quot;scendere&amp;quot; a coprire anche l&#039;area dei 14/15 punti, con buone bicolori 5/4 e oltre, mai con la 4432. Campo di forza 14/16 (prima era 15/17); non tutti i 14, la fonte raccomanda solo quelli con cui sembra un peccato appoggiare soltanto a 2. Mano modello del punteggio minimo (&amp;quot;Distribuzione, mano pura, qualità dei punti. Se no, no.&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.AK54.AKT97.853&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 4{{fiori}}&#039;&#039;&#039;: appoggio a manche, diretto (nessun singolo che piaccia descrivere) o con le varie splinter. Mano forte ma &amp;quot;di prese&amp;quot; piuttosto che &amp;quot;di punti&amp;quot;: una bella 6/4 o 7/4 di 15-16 punti con 8-9 vincenti teoriche. La mano di esempio della fonte (♠xxx ♥AQJx ♦AKJ10xx ♣-) contiene 14 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1{{quadri}} 1{{cuori}} 2{{picche}}(*)&#039;&#039;&#039;: il Multirever. Un rovescio fatto di &amp;quot;punti&amp;quot;, troppi per una delle opzioni precedenti ma troppo pochi per l&#039;apertura di 2{{fiori}}; mediamente una mano di circa 18, 19, 20.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per confronto, la fonte riporta la sequenza seguente come &amp;quot;il massimo immaginabile&amp;quot;: una mano che non ha voluto rischiare il passo, perché può far manche da sola o con un re o una dama al posto giusto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;2C P 2H P 3H&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rever reale 5/4 e rever reale 6/4 ===&lt;br /&gt;
&lt;br /&gt;
Sono differenziati perché una mano con una sesta ha una affrancabile in più e con vie naturali sarebbe difficile descriverla: una licita per la 5/4 e una per la 6/4 o 7/4.&lt;br /&gt;
&lt;br /&gt;
== Le ridichiarazioni del rispondente ==&lt;br /&gt;
&lt;br /&gt;
Il Passo è impensabile (il secondo colore potrebbe essere vuoto). Per ognuna delle cinque sequenze le repliche possibili del rispondente sono le seguenti; la seconda dichiarazione elencata come &amp;quot;relè&amp;quot; è quella forzante.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza&lt;br /&gt;
! Repliche del rispondente&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (relè), 2SA, 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}}, 2{{picche}} (relè), 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}}&lt;br /&gt;
| 2{{cuori}} (relè), 2{{picche}}, 2SA, 3{{fiori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA (relè), 3{{fiori}}, 3{{quadri}}, 3{{cuori}}&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}}, 2SA (relè), 3{{fiori}}, 3{{quadri}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In ognuna ci sono due dichiarazioni assolutamente scoraggianti:&lt;br /&gt;
&lt;br /&gt;
* il riporto nel minore dell&#039;apertore (debolissima: &amp;quot;giocherei un parziale nella tua lunga, in cui ho mediamente due/tre cartine&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del proprio colore (anch&#039;essa estremamente scoraggiante: lunga e desiderio di giocare quel parziale, salvo plusvalori e fit dell&#039;apertore; tende a escludere visuale di manche: mediamente 4/5 punti, forse 6 brutti, e sei carte, cinque solo se annunciabili a livello due).&lt;br /&gt;
&lt;br /&gt;
Rimangono due dichiarazioni, i senza atout e il quarto colore. Per ognuno dei cinque casi:&lt;br /&gt;
&lt;br /&gt;
* la più economica è il &#039;&#039;&#039;relè&#039;&#039;&#039;, tendenzialmente forzante a manche, con 6/7+ punti;&lt;br /&gt;
&lt;br /&gt;
* la meno economica è il &#039;&#039;&#039;sign-off&#039;&#039;&#039; nel secondo colore detto dall&#039;apertore, sempre che lo abbia davvero.&lt;br /&gt;
&lt;br /&gt;
Quindi tre dichiarazioni deboli per arrestarsi al parziale in uno dei tre colori detti e un&#039;unica dichiarazione forzante per chiedere all&#039;apertore che tipo di rever possiede. Il relè si usa con tutte le mani con cui è legittimo affrontare almeno un tentativo di manche (sempre con 7+ punti, anche con 5/6 carini).&lt;br /&gt;
&lt;br /&gt;
Sequenze forzanti (relè):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1H P 2D(multirever) P 2S(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2H(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1H P 2S(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele)&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il sign-off (secondo footnote della fonte) è un segnale scoraggiante di arresto: &amp;quot;se hai per davvero il secondo colore che hai detto, giocherei un parziale nel secondo colore; nessuna prospettiva di manche: semplicemente aspetto di riportarti nel minore lungo perché se per caso hai davvero il secondo colore può darsi che te lo possa appoggiare&amp;quot;. Il &amp;quot;gradino libero&amp;quot; è la più bassa dichiarazione a cui non sia già stato assegnato un significato particolare.&lt;br /&gt;
&lt;br /&gt;
== L&#039;apertore si descrive sul relè forzante ==&lt;br /&gt;
&lt;br /&gt;
Regole mnemoniche:&lt;br /&gt;
&lt;br /&gt;
* il primo gradino libero è sempre il &#039;&#039;&#039;Rever Reale&#039;&#039;&#039; (5/4);&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;minore di apertura&#039;&#039;&#039; mostra sempre la monocolore minore;&lt;br /&gt;
&lt;br /&gt;
* la ripetizione del &#039;&#039;&#039;secondo colore&#039;&#039;&#039; mostra sempre la 6-4;&lt;br /&gt;
&lt;br /&gt;
* l&#039;appoggio a &#039;&#039;&#039;tre&#039;&#039;&#039; nel colore del rispondente mostra la sbilanciata 18-20 di Gran Rever con fit quarto.&lt;br /&gt;
&lt;br /&gt;
Dopo il relè si dà per scontato che la coppia abbia la forza per la manche: nulla è più passabile sotto manche.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Sequenza fino al relè&lt;br /&gt;
! 1° gradino libero: RR 5/4&lt;br /&gt;
! Ripetizione del minore: monocolore&lt;br /&gt;
! Ripetizione del 2° colore: RR 6-4&lt;br /&gt;
! Appoggio a tre: sbilanciata 18-20 con 4 carte&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{quadri}} P 2{{cuori}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{cuori}} (6 fiori, 4 cuori)&lt;br /&gt;
| 3{{quadri}} (4 quadri)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{cuori}} P 2{{quadri}} P 2{{picche}}&lt;br /&gt;
| 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{fiori}} P 1{{picche}} P 2{{quadri}} P 2{{cuori}}&lt;br /&gt;
| 2{{picche}} (nella fonte segnalato con &amp;quot;(!!!)&amp;quot;)&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}} (6 fiori, 4 quadri)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{cuori}} P 2{{picche}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{picche}} (6 quadri, 4 picche)&lt;br /&gt;
| 3{{cuori}} (4 cuori)&lt;br /&gt;
|-&lt;br /&gt;
| 1{{quadri}} P 1{{picche}} P 2{{cuori}} P 2SA&lt;br /&gt;
| 3{{fiori}}&lt;br /&gt;
| 3{{quadri}}&lt;br /&gt;
| 3{{cuori}} (6 quadri, 4 cuori)&lt;br /&gt;
| 3{{picche}} (4 picche)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Esempi dopo il relè ===&lt;br /&gt;
&lt;br /&gt;
Nota sulle mani: le cartine &amp;quot;x&amp;quot; della fonte sono state sostituite da carte basse non duplicate; il &amp;quot;10&amp;quot; è scritto T.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rever reale 5/4.&#039;&#039;&#039; Su 1{{quadri}} 1{{picche}} 2{{cuori}} il rispondente fa il relè 2SA; 3{{fiori}} (primo gradino libero) mostra il rever reale 5/4. Su 3{{picche}}, che allunga le picche, Sud appoggia; Nord capisce che la Q{{fiori}} è valore nullo e si accontenta.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3C(RR) P 3S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQ6.AJ97.AK976.4&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;JT872.Q85.Q2.AQ8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Monocolore forte.&#039;&#039;&#039; Sud svela la monocolore con la ripetizione del minore, Nord dichiara 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 3C(monocolore) P 3NT&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A94.4.AQJ974&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q87.JT85.QJT2.K8&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Il riporto è una replica debolissima.&#039;&#039;&#039; Secondo la fonte, il riporto significa: non vorrei giocare la manche neppure se hai il rever con fit quarto nel mio colore, a meno che tu non abbia &amp;quot;i serpenti in mano&amp;quot;. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;A4.K9.KQJ976.AJ5&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J875.876.32.K876&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Relè debole (secondo gradino libero).&#039;&#039;&#039; Nord ha una sola prospettiva di manche, il rever fiori-picche; il 2SA è il secondo gradino libero, debole, mentre il relè sarebbe stato 2{{cuori}}. Sud ridichiara a seconda della sua mano e dice 3{{quadri}} solo con la 5/4 minore e punteggio minimo; con 20 direbbe 3SA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1S P 2D(multirever) P 2NT P 3D P P&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;2.A63.KQ76.AKJ54&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;J9854.87.A985.87&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atout fissato nel nobile.&#039;&#039;&#039; Con il rever di appoggio quarto nel nobile l&#039;atout è inequivocabilmente fissato: il 4{{quadri}} è una cue bid, non un ripensamento sull&#039;atout. Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AQJ4.3.AQJ765.A2&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2NT(rele) P 3S P 4D&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La mano di Nord riportata dalla fonte (♠K109xxx ♥xx ♦Kx ♣Qx) contiene soltanto 12 carte (probabile refuso) e non viene mostrata.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minore dell&#039;apertore fissato a livello 4.&#039;&#039;&#039; Il minore dell&#039;apertore si può fissare dichiarandolo a livello 3 (comunque forzante) o a livello 4: inequivocabilmente atout fissato e visuale di slam. La mano limite si sarebbe espressa riportando a 3{{fiori}} subito, direttamente su 2{{cuori}}, evitando il relè.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1C P 1D P 2H(multirever) P 2S(rele) P 2NT P 4C&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AK5.A876.2.AQJ98&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;43.KQ4.AJ83.K765&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arresto a livello di riporto, ma Sud chiama manche.&#039;&#039;&#039; Nord frena con la ripetizione del proprio colore, ma Sud, con la mano di fit a picche, chiama comunque manche.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bidding&amp;gt;1D P 1S P 2H(multirever) P 2S P 4S&amp;lt;/bidding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sud (apertore):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;AKJ2.A82.KQJ4.J9&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nord (rispondente):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hand&amp;gt;Q98764.K75.2.763&amp;lt;/hand&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: nella fonte il commento a questa sequenza contiene una formula poco chiara (&amp;quot;5 0 6??&amp;quot;); qui si riportano la sequenza e le mani con le cartine sostituite.&lt;br /&gt;
&lt;br /&gt;
== Varianti ==&lt;br /&gt;
&lt;br /&gt;
La fonte descrive una sola versione della convenzione e non menziona varianti: non sono note varianti significative e per questo non esistono pagine di variante.&lt;br /&gt;
&lt;br /&gt;
== Vedi anche ==&lt;br /&gt;
&lt;br /&gt;
* [[Splinter]]&lt;br /&gt;
&lt;br /&gt;
== Fonti ==&lt;br /&gt;
&lt;br /&gt;
* Marina Causa, &#039;&#039;Corso Preagonistica 2026&#039;&#039;, dispensa &amp;quot;03. Il Multirever, o Primo Rever Disponibile (PRD)&amp;quot; (PDF, 5 pagine). L&#039;ideatore originale della convenzione non è indicato nella fonte.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Glossario_del_bridge&amp;diff=1810</id>
		<title>Glossario del bridge</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Glossario_del_bridge&amp;diff=1810"/>
		<updated>2026-10-16T11:03:11Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Versione segnata per la traduzione&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Glossario}}&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Questo glossario definisce i termini più comuni utilizzati nel gioco del [[Regole del bridge|bridge]], sia nella fase di dichiarazione che in quella di gioco della carta.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
L&#039;elenco è in ordine alfabetico. Clicca su una lettera per navigare direttamente alla sezione corrispondente.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; font-size:1.2em; margin-bottom:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[#A|A]] · [[#B|B]] · [[#C|C]] · [[#D|D]] · [[#F|F]] · [[#G|G]] · [[#I|I]] · [[#L|L]] · [[#M|M]] · [[#N|N]] · [[#O|O]] · [[#P|P]] · [[#Q|Q]] · [[#R|R]] · [[#S|S]] · [[#T|T]] · [[#V|V]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:3--&amp;gt; &#039;&#039;&#039;Apertura&#039;&#039;&#039;: La prima dichiarazione di un colore o a Senza Atout (diversa da &amp;quot;Passo&amp;quot;) effettuata in una smazzata.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:4--&amp;gt; &#039;&#039;&#039;Appoggio&#039;&#039;&#039;: Dichiarazione che supporta il colore licitato dal compagno, indicando di possedere un buon numero di carte in quel seme (solitamente almeno tre).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; &#039;&#039;&#039;Atout&#039;&#039;&#039; (o &#039;&#039;Atù&#039;&#039;, in inglese &#039;&#039;Trump&#039;&#039;): Il seme che viene scelto come briscola durante la licitazione e che comanda su tutti gli altri semi durante il gioco della carta.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt; &#039;&#039;&#039;Attacco&#039;&#039;&#039;: La prima carta giocata dal difensore che si trova alla sinistra del dichiarante, all&#039;inizio del gioco della carta. La scelta della carta d&#039;attacco è un momento cruciale della difesa.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; &#039;&#039;&#039;Bilanciata (Mano)&#039;&#039;&#039;: Una mano con una distribuzione di carte equilibrata, senza vuoti o singleton e con al massimo un doubleton. Le distribuzioni tipiche sono 4-3-3-3, 4-4-3-2 e 5-3-3-2.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; &#039;&#039;&#039;Blackwood&#039;&#039;&#039;: Una famosa convenzione dichiarativa (solitamente la licita di 4SA) usata per chiedere al compagno il numero di Assi (e talvolta Re) posseduti, al fine di esplorare la possibilità di giocare uno slam.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt; &#039;&#039;&#039;Colore&#039;&#039;&#039;: Uno dei quattro semi delle carte: Fiori (♣), Quadri (♦), Cuori (♥) e Picche (♠).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt; &#039;&#039;&#039;Contratto&#039;&#039;&#039;: L&#039;impegno finale preso da una coppia durante la fase di dichiarazione. Consiste in un numero di prese da effettuare (da 1 a 7) e un seme di atout (o Senza Atout).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; &#039;&#039;&#039;Contro&#039;&#039;&#039; (in inglese &#039;&#039;Double&#039;&#039;): Una dichiarazione che aumenta il punteggio (sia in positivo che in negativo) del contratto avversario. Può avere un significato informativo (per descrivere la propria mano) o punitivo (se si pensa che gli avversari non possano mantenere il contratto).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; &#039;&#039;&#039;Convenzione&#039;&#039;&#039;: Un accordo tra compagni su un significato artificiale o specifico di una determinata licita, che non corrisponde al suo significato naturale. Esempi famosi sono la Stayman e la Jacoby Transfer.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; &#039;&#039;&#039;Copertura&#039;&#039;&#039;: Una carta che può vincere una presa dopo che una carta più alta dello stesso seme è già stata giocata.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; &#039;&#039;&#039;Cue Bid&#039;&#039;&#039;: Una licita in un colore mostrato dagli avversari. Viene usata come licita forzante per mostrare una mano forte e chiedere maggiori informazioni al compagno.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; &#039;&#039;&#039;Dichiarazione&#039;&#039;&#039; (o &#039;&#039;Licita&#039;&#039;): Ogni offerta fatta da un giocatore durante la fase di licitazione (es. &amp;quot;1 Cuori&amp;quot;, &amp;quot;Passo&amp;quot;, &amp;quot;Contro&amp;quot;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt; &#039;&#039;&#039;Dichiarante&#039;&#039;&#039;: Il giocatore della coppia che per primo ha dichiarato il seme (o Senza Atout) del contratto finale. Il dichiarante gioca sia le proprie carte che quelle del morto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; &#039;&#039;&#039;Difesa&#039;&#039;&#039;: La coppia che non si è aggiudicata il contratto e che cerca di impedire al dichiarante di realizzare le prese necessarie.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; &#039;&#039;&#039;Distribuzione&#039;&#039;&#039;: La suddivisione delle 13 carte di una mano nei quattro semi.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; &#039;&#039;&#039;Fallo&#039;&#039;&#039; (o &#039;&#039;Scarto&#039;&#039;): Giocare una carta di un seme diverso da quello di uscita, quando non si possiedono più carte di quel seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; &#039;&#039;&#039;Fit&#039;&#039;&#039;: Avere un numero sufficiente di carte di un determinato seme in combinazione con il proprio compagno (solitamente almeno 8 carte in totale) per poterlo eleggere a seme di atout.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; &#039;&#039;&#039;Forzante&#039;&#039;&#039;: Una dichiarazione che obbliga il compagno a parlare di nuovo, a meno che non intervengano gli avversari. Indica una mano forte o una situazione in cui è necessario scambiare altre informazioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; &#039;&#039;&#039;Grande Slam&#039;&#039;&#039;: Un contratto al livello di 7, che richiede di effettuare tutte le 13 prese possibili.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; &#039;&#039;&#039;Gioco&#039;&#039;&#039;: La fase della smazzata che segue la dichiarazione, in cui i giocatori giocano le loro carte per effettuare le prese.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt; &#039;&#039;&#039;Impasso&#039;&#039;&#039; (in inglese &#039;&#039;Finesse&#039;&#039;): Una tecnica di gioco che consiste nel tentare di vincere una presa con una carta più bassa, sperando che una carta avversaria più alta sia in una posizione favorevole.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; &#039;&#039;&#039;Invito&#039;&#039;&#039;: Una dichiarazione che non è forzante, ma che invita il compagno a licitare un contratto superiore (solitamente a manche o a slam) se ha una mano non minima per le sue precedenti dichiarazioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt; &#039;&#039;&#039;Licita&#039;&#039;&#039;: Vedi [[#D|Dichiarazione]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; &#039;&#039;&#039;Linea&#039;&#039;&#039;: Si usa per indicare le due coppie. La &#039;&#039;linea Nord-Sud&#039;&#039; e la &#039;&#039;linea Est-Ovest&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; &#039;&#039;&#039;Manche&#039;&#039;&#039;: Un contratto il cui punteggio, se realizzato, è sufficiente a vincere una partita (es. 3 Senza Atout, 4 Cuori, 4 Picche, 5 Fiori, 5 Quadri).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; &#039;&#039;&#039;Mano&#039;&#039;&#039;: Le 13 carte iniziali distribuite a un giocatore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; &#039;&#039;&#039;Morto&#039;&#039;&#039; (in inglese &#039;&#039;Dummy&#039;&#039;): Il compagno del dichiarante. Dopo l&#039;attacco iniziale, il morto stende le proprie carte scoperte sul tavolo e non partecipa più attivamente al gioco; sarà il dichiarante a giocare le carte per lui.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt; &#039;&#039;&#039;Nobili (Semi)&#039;&#039;&#039;: I semi di Cuori (♥) e Picche (♠), chiamati così perché valgono di più nel calcolo del punteggio (30 punti per presa) rispetto ai semi minori.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt; &#039;&#039;&#039;Onori&#039;&#039;&#039;: Le cinque carte di maggior valore in ogni seme: Asso (A), Re (K), Donna (Q), Fante (J) e Dieci (10).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; &#039;&#039;&#039;Passo&#039;&#039;&#039;: Dichiarazione con cui un giocatore decide di non fare nessuna licita, contro o surcontro. Se tutti e quattro i giocatori passano all&#039;inizio, le carte vengono raccolte e ridistribuite.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; &#039;&#039;&#039;Piccolo Slam&#039;&#039;&#039;: Un contratto al livello di 6, che richiede di effettuare 12 prese su 13.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt; &#039;&#039;&#039;Presa&#039;&#039;&#039;: L&#039;insieme delle quattro carte giocate in un round (una per ogni giocatore). La presa è vinta dal giocatore che ha giocato la carta più alta nel seme di uscita, o l&#039;atout più alto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; &#039;&#039;&#039;Punti Onori (PO)&#039;&#039;&#039;: Un metodo di valutazione della forza di una mano basato sugli onori posseduti: Asso=4, Re=3, Donna=2, Fante=1.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; &#039;&#039;&#039;Qualificante&#039;&#039;&#039;: Una mano o una licita che soddisfa i requisiti minimi per una determinata azione, secondo il sistema dichiarativo della coppia.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; &#039;&#039;&#039;Rientro&#039;&#039;&#039;: Una carta alta che permette di guadagnare la presa e quindi il controllo del gioco, consentendo di muovere da una delle due mani della coppia (dichiarante o morto).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; &#039;&#039;&#039;Rispondente&#039;&#039;&#039;: Il compagno dell&#039;apertore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; &#039;&#039;&#039;Scarto&#039;&#039;&#039;: Vedi [[#F|Fallo]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; &#039;&#039;&#039;Senza Atout (SA)&#039;&#039;&#039;: Un contratto in cui non esiste un seme di atout. La presa è vinta semplicemente dalla carta più alta nel seme di uscita.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt; &#039;&#039;&#039;Singleton&#039;&#039;&#039;: Possedere una sola carta di un determinato seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; &#039;&#039;&#039;Squeeze&#039;&#039;&#039;: Una tecnica di gioco avanzata con cui il dichiarante, giocando una carta vincente, costringe uno o entrambi i difensori a scartare una carta che custodiva una presa futura.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; &#039;&#039;&#039;Stayman&#039;&#039;&#039;: Una convenzione (solitamente la licita di 2 Fiori in risposta a un&#039;apertura a Senza Atout) usata per chiedere all&#039;apertore se possiede un seme nobile di almeno quattro carte.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; &#039;&#039;&#039;Surcontro&#039;&#039;&#039; (in inglese &#039;&#039;Redouble&#039;&#039;): Una dichiarazione fatta dopo un &amp;quot;Contro&amp;quot; avversario, che aumenta ulteriormente il valore del punteggio del contratto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; &#039;&#039;&#039;Taglio&#039;&#039;&#039; (o &#039;&#039;Tuffo&#039;&#039;): Giocare una carta di atout quando non si possiedono più carte del seme di uscita. Il taglio permette di vincere una presa che altrimenti andrebbe agli avversari.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; &#039;&#039;&#039;Vulnerabile&#039;&#039;&#039;: Condizione di una coppia in una determinata smazzata che aumenta i bonus e le penalità. La vulnerabilità cambia secondo uno schema predefinito durante una partita.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; &#039;&#039;&#039;Vuoto&#039;&#039;&#039;: Non possedere alcuna carta di un determinato seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Voci correlate == &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:50--&amp;gt; [[Storia del bridge]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; [[Federazioni di bridge]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Bridge]]&lt;br /&gt;
[[Categoria:Glossario]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Pagina_principale&amp;diff=1809</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Pagina_principale&amp;diff=1809"/>
		<updated>2026-10-16T11:03:11Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Versione segnata per la traduzione&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Articolo}}&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= Benvenuti su &#039;&#039;&#039;BridgePedia&#039;&#039;&#039; = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BridgePedia&#039;&#039;&#039; è il punto di riferimento collaborativo per tutti i giocatori, le coppie e le associazioni che desiderano raccogliere, documentare e condividere le conoscenze sul gioco del bridge.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Qui troverai regole, licite, convenzioni e carte delle convenzioni, aggiornate e mantenute direttamente dagli utenti della comunità.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Obiettivi == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; Rendere facilmente accessibili le [[Regole del bridge|regole ufficiali del bridge]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt; Documentare in modo strutturato le principali [[Licite|sequenze di licita]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt; Creare un archivio aggiornato delle [[Convenzioni|convenzioni più usate]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt; Fornire uno spazio per le [[Carte delle convenzioni|carte delle convenzioni di coppia e di squadra]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt; Offrire alle associazioni uno strumento condiviso per gestire e pubblicare materiali tecnici.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Come contribuire == &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt; Ogni utente registrato può modificare o integrare i contenuti esistenti.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; Per iniziare, visita la guida: [[Aiuto:Come modificare una pagina]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; Usa i link interni (tra [[ ]]) per creare nuove voci.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Struttura del Wiki == &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; [[Storia del bridge]] - come è nato e si è evoluto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt; [[Regole del bridge]] – regolamenti ufficiali e adattamenti locali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; [[Licite]] – spiegazioni e sequenze tipiche.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; [[Convenzioni]] – elenchi e descrizioni di convenzioni (Stayman, Blackwood, ecc.).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; [[Carte delle convenzioni]] – schede personalizzate di coppia o associazione.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; [[Associazioni di bridge]] – spazi dedicati ad associazioni e circoli.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; [[Glossario del bridge]] – termini e definizioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Linee guida == &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; Mantieni i contenuti chiari e neutrali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt; Cita fonti affidabili quando riporti regole ufficiali o documenti federali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; Usa una terminologia coerente con il lessico del bridge.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Risorse utili == &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; [https://www.federbridge.it/ FIGB – Federazione Italiana Gioco Bridge]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; [https://www.worldbridge.org/ WBF – World Bridge Federation]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{Nota|&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; Questa è una piattaforma collaborativa: ogni contributo è prezioso per arricchire la conoscenza condivisa sul bridge.&amp;lt;/translate&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Glossario_del_bridge&amp;diff=1808</id>
		<title>Glossario del bridge</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Glossario_del_bridge&amp;diff=1808"/>
		<updated>2026-10-16T11:01:58Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Corretti link rossi (bridge, Voci correlate)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Glossario}}&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Questo glossario definisce i termini più comuni utilizzati nel gioco del [[Regole del bridge|bridge]], sia nella fase di dichiarazione che in quella di gioco della carta.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
L&#039;elenco è in ordine alfabetico. Clicca su una lettera per navigare direttamente alla sezione corrispondente.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; font-size:1.2em; margin-bottom:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[#A|A]] · [[#B|B]] · [[#C|C]] · [[#D|D]] · [[#F|F]] · [[#G|G]] · [[#I|I]] · [[#L|L]] · [[#M|M]] · [[#N|N]] · [[#O|O]] · [[#P|P]] · [[#Q|Q]] · [[#R|R]] · [[#S|S]] · [[#T|T]] · [[#V|V]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Apertura&#039;&#039;&#039;: La prima dichiarazione di un colore o a Senza Atout (diversa da &amp;quot;Passo&amp;quot;) effettuata in una smazzata.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Appoggio&#039;&#039;&#039;: Dichiarazione che supporta il colore licitato dal compagno, indicando di possedere un buon numero di carte in quel seme (solitamente almeno tre).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Atout&#039;&#039;&#039; (o &#039;&#039;Atù&#039;&#039;, in inglese &#039;&#039;Trump&#039;&#039;): Il seme che viene scelto come briscola durante la licitazione e che comanda su tutti gli altri semi durante il gioco della carta.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Attacco&#039;&#039;&#039;: La prima carta giocata dal difensore che si trova alla sinistra del dichiarante, all&#039;inizio del gioco della carta. La scelta della carta d&#039;attacco è un momento cruciale della difesa.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Bilanciata (Mano)&#039;&#039;&#039;: Una mano con una distribuzione di carte equilibrata, senza vuoti o singleton e con al massimo un doubleton. Le distribuzioni tipiche sono 4-3-3-3, 4-4-3-2 e 5-3-3-2.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Blackwood&#039;&#039;&#039;: Una famosa convenzione dichiarativa (solitamente la licita di 4SA) usata per chiedere al compagno il numero di Assi (e talvolta Re) posseduti, al fine di esplorare la possibilità di giocare uno slam.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Colore&#039;&#039;&#039;: Uno dei quattro semi delle carte: Fiori (♣), Quadri (♦), Cuori (♥) e Picche (♠).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Contratto&#039;&#039;&#039;: L&#039;impegno finale preso da una coppia durante la fase di dichiarazione. Consiste in un numero di prese da effettuare (da 1 a 7) e un seme di atout (o Senza Atout).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Contro&#039;&#039;&#039; (in inglese &#039;&#039;Double&#039;&#039;): Una dichiarazione che aumenta il punteggio (sia in positivo che in negativo) del contratto avversario. Può avere un significato informativo (per descrivere la propria mano) o punitivo (se si pensa che gli avversari non possano mantenere il contratto).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Convenzione&#039;&#039;&#039;: Un accordo tra compagni su un significato artificiale o specifico di una determinata licita, che non corrisponde al suo significato naturale. Esempi famosi sono la Stayman e la Jacoby Transfer.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Copertura&#039;&#039;&#039;: Una carta che può vincere una presa dopo che una carta più alta dello stesso seme è già stata giocata.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Cue Bid&#039;&#039;&#039;: Una licita in un colore mostrato dagli avversari. Viene usata come licita forzante per mostrare una mano forte e chiedere maggiori informazioni al compagno.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Dichiarazione&#039;&#039;&#039; (o &#039;&#039;Licita&#039;&#039;): Ogni offerta fatta da un giocatore durante la fase di licitazione (es. &amp;quot;1 Cuori&amp;quot;, &amp;quot;Passo&amp;quot;, &amp;quot;Contro&amp;quot;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Dichiarante&#039;&#039;&#039;: Il giocatore della coppia che per primo ha dichiarato il seme (o Senza Atout) del contratto finale. Il dichiarante gioca sia le proprie carte che quelle del morto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Difesa&#039;&#039;&#039;: La coppia che non si è aggiudicata il contratto e che cerca di impedire al dichiarante di realizzare le prese necessarie.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Distribuzione&#039;&#039;&#039;: La suddivisione delle 13 carte di una mano nei quattro semi.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Fallo&#039;&#039;&#039; (o &#039;&#039;Scarto&#039;&#039;): Giocare una carta di un seme diverso da quello di uscita, quando non si possiedono più carte di quel seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Fit&#039;&#039;&#039;: Avere un numero sufficiente di carte di un determinato seme in combinazione con il proprio compagno (solitamente almeno 8 carte in totale) per poterlo eleggere a seme di atout.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Forzante&#039;&#039;&#039;: Una dichiarazione che obbliga il compagno a parlare di nuovo, a meno che non intervengano gli avversari. Indica una mano forte o una situazione in cui è necessario scambiare altre informazioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Grande Slam&#039;&#039;&#039;: Un contratto al livello di 7, che richiede di effettuare tutte le 13 prese possibili.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Gioco&#039;&#039;&#039;: La fase della smazzata che segue la dichiarazione, in cui i giocatori giocano le loro carte per effettuare le prese.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Impasso&#039;&#039;&#039; (in inglese &#039;&#039;Finesse&#039;&#039;): Una tecnica di gioco che consiste nel tentare di vincere una presa con una carta più bassa, sperando che una carta avversaria più alta sia in una posizione favorevole.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Invito&#039;&#039;&#039;: Una dichiarazione che non è forzante, ma che invita il compagno a licitare un contratto superiore (solitamente a manche o a slam) se ha una mano non minima per le sue precedenti dichiarazioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Licita&#039;&#039;&#039;: Vedi [[#D|Dichiarazione]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Linea&#039;&#039;&#039;: Si usa per indicare le due coppie. La &#039;&#039;linea Nord-Sud&#039;&#039; e la &#039;&#039;linea Est-Ovest&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Manche&#039;&#039;&#039;: Un contratto il cui punteggio, se realizzato, è sufficiente a vincere una partita (es. 3 Senza Atout, 4 Cuori, 4 Picche, 5 Fiori, 5 Quadri).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Mano&#039;&#039;&#039;: Le 13 carte iniziali distribuite a un giocatore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Morto&#039;&#039;&#039; (in inglese &#039;&#039;Dummy&#039;&#039;): Il compagno del dichiarante. Dopo l&#039;attacco iniziale, il morto stende le proprie carte scoperte sul tavolo e non partecipa più attivamente al gioco; sarà il dichiarante a giocare le carte per lui.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Nobili (Semi)&#039;&#039;&#039;: I semi di Cuori (♥) e Picche (♠), chiamati così perché valgono di più nel calcolo del punteggio (30 punti per presa) rispetto ai semi minori.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Onori&#039;&#039;&#039;: Le cinque carte di maggior valore in ogni seme: Asso (A), Re (K), Donna (Q), Fante (J) e Dieci (10).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Passo&#039;&#039;&#039;: Dichiarazione con cui un giocatore decide di non fare nessuna licita, contro o surcontro. Se tutti e quattro i giocatori passano all&#039;inizio, le carte vengono raccolte e ridistribuite.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Piccolo Slam&#039;&#039;&#039;: Un contratto al livello di 6, che richiede di effettuare 12 prese su 13.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Presa&#039;&#039;&#039;: L&#039;insieme delle quattro carte giocate in un round (una per ogni giocatore). La presa è vinta dal giocatore che ha giocato la carta più alta nel seme di uscita, o l&#039;atout più alto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Punti Onori (PO)&#039;&#039;&#039;: Un metodo di valutazione della forza di una mano basato sugli onori posseduti: Asso=4, Re=3, Donna=2, Fante=1.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Qualificante&#039;&#039;&#039;: Una mano o una licita che soddisfa i requisiti minimi per una determinata azione, secondo il sistema dichiarativo della coppia.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Rientro&#039;&#039;&#039;: Una carta alta che permette di guadagnare la presa e quindi il controllo del gioco, consentendo di muovere da una delle due mani della coppia (dichiarante o morto).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Rispondente&#039;&#039;&#039;: Il compagno dell&#039;apertore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Scarto&#039;&#039;&#039;: Vedi [[#F|Fallo]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Senza Atout (SA)&#039;&#039;&#039;: Un contratto in cui non esiste un seme di atout. La presa è vinta semplicemente dalla carta più alta nel seme di uscita.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Singleton&#039;&#039;&#039;: Possedere una sola carta di un determinato seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Squeeze&#039;&#039;&#039;: Una tecnica di gioco avanzata con cui il dichiarante, giocando una carta vincente, costringe uno o entrambi i difensori a scartare una carta che custodiva una presa futura.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Stayman&#039;&#039;&#039;: Una convenzione (solitamente la licita di 2 Fiori in risposta a un&#039;apertura a Senza Atout) usata per chiedere all&#039;apertore se possiede un seme nobile di almeno quattro carte.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Surcontro&#039;&#039;&#039; (in inglese &#039;&#039;Redouble&#039;&#039;): Una dichiarazione fatta dopo un &amp;quot;Contro&amp;quot; avversario, che aumenta ulteriormente il valore del punteggio del contratto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Taglio&#039;&#039;&#039; (o &#039;&#039;Tuffo&#039;&#039;): Giocare una carta di atout quando non si possiedono più carte del seme di uscita. Il taglio permette di vincere una presa che altrimenti andrebbe agli avversari.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Vulnerabile&#039;&#039;&#039;: Condizione di una coppia in una determinata smazzata che aumenta i bonus e le penalità. La vulnerabilità cambia secondo uno schema predefinito durante una partita.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Vuoto&#039;&#039;&#039;: Non possedere alcuna carta di un determinato seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Voci correlate ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Storia del bridge]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Federazioni di bridge]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Bridge]]&lt;br /&gt;
[[Categoria:Glossario]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Pagina_principale&amp;diff=1807</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Pagina_principale&amp;diff=1807"/>
		<updated>2026-10-16T11:01:57Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Nota: frase in translate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Articolo}}&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= Benvenuti su &#039;&#039;&#039;BridgePedia&#039;&#039;&#039; =&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BridgePedia&#039;&#039;&#039; è il punto di riferimento collaborativo per tutti i giocatori, le coppie e le associazioni che desiderano raccogliere, documentare e condividere le conoscenze sul gioco del bridge.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Qui troverai regole, licite, convenzioni e carte delle convenzioni, aggiornate e mantenute direttamente dagli utenti della comunità.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Obiettivi ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Rendere facilmente accessibili le [[Regole del bridge|regole ufficiali del bridge]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Documentare in modo strutturato le principali [[Licite|sequenze di licita]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Creare un archivio aggiornato delle [[Convenzioni|convenzioni più usate]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Fornire uno spazio per le [[Carte delle convenzioni|carte delle convenzioni di coppia e di squadra]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Offrire alle associazioni uno strumento condiviso per gestire e pubblicare materiali tecnici.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Come contribuire ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Ogni utente registrato può modificare o integrare i contenuti esistenti.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Per iniziare, visita la guida: [[Aiuto:Come modificare una pagina]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Usa i link interni (tra [[ ]]) per creare nuove voci.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Struttura del Wiki ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Storia del bridge]] - come è nato e si è evoluto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Regole del bridge]] – regolamenti ufficiali e adattamenti locali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Licite]] – spiegazioni e sequenze tipiche.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Convenzioni]] – elenchi e descrizioni di convenzioni (Stayman, Blackwood, ecc.).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Carte delle convenzioni]] – schede personalizzate di coppia o associazione.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Associazioni di bridge]] – spazi dedicati ad associazioni e circoli.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Glossario del bridge]] – termini e definizioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Linee guida ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Mantieni i contenuti chiari e neutrali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Cita fonti affidabili quando riporti regole ufficiali o documenti federali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Usa una terminologia coerente con il lessico del bridge.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Risorse utili ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[https://www.federbridge.it/ FIGB – Federazione Italiana Gioco Bridge]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[https://www.worldbridge.org/ WBF – World Bridge Federation]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{Nota|&amp;lt;translate&amp;gt;Questa è una piattaforma collaborativa: ogni contributo è prezioso per arricchire la conoscenza condivisa sul bridge.&amp;lt;/translate&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Template:Nota&amp;diff=1806</id>
		<title>Template:Nota</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Template:Nota&amp;diff=1806"/>
		<updated>2026-10-16T11:01:56Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Creato template Nota (riquadro di nota)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border:1px solid #a2a9b1; border-left:4px solid #36c; background:#eaf3ff; color:#202122; padding:0.5em 1em; margin:1em 0; border-radius:2px;&amp;quot;&amp;gt;{{{1|}}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Riquadro di nota semplice. Uso: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Nota|Testo della nota}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Il primo parametro posizionale è il testo; può contenere anche elenchi puntati e wikitesto. Se il testo contiene il segno &amp;quot;=&amp;quot; usare &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt;.&lt;br /&gt;
Vedi anche [[Template:Avviso]].&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Glossario_del_bridge&amp;diff=1805</id>
		<title>Glossario del bridge</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Glossario_del_bridge&amp;diff=1805"/>
		<updated>2026-10-16T10:52:37Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Predisposizione traduzione&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Glossario}}&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Questo glossario definisce i termini più comuni utilizzati nel gioco del [[:it:bridge|bridge]], sia nella fase di dichiarazione che in quella di gioco della carta.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
L&#039;elenco è in ordine alfabetico. Clicca su una lettera per navigare direttamente alla sezione corrispondente.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; font-size:1.2em; margin-bottom:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[#A|A]] · [[#B|B]] · [[#C|C]] · [[#D|D]] · [[#F|F]] · [[#G|G]] · [[#I|I]] · [[#L|L]] · [[#M|M]] · [[#N|N]] · [[#O|O]] · [[#P|P]] · [[#Q|Q]] · [[#R|R]] · [[#S|S]] · [[#T|T]] · [[#V|V]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Apertura&#039;&#039;&#039;: La prima dichiarazione di un colore o a Senza Atout (diversa da &amp;quot;Passo&amp;quot;) effettuata in una smazzata.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Appoggio&#039;&#039;&#039;: Dichiarazione che supporta il colore licitato dal compagno, indicando di possedere un buon numero di carte in quel seme (solitamente almeno tre).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Atout&#039;&#039;&#039; (o &#039;&#039;Atù&#039;&#039;, in inglese &#039;&#039;Trump&#039;&#039;): Il seme che viene scelto come briscola durante la licitazione e che comanda su tutti gli altri semi durante il gioco della carta.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Attacco&#039;&#039;&#039;: La prima carta giocata dal difensore che si trova alla sinistra del dichiarante, all&#039;inizio del gioco della carta. La scelta della carta d&#039;attacco è un momento cruciale della difesa.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Bilanciata (Mano)&#039;&#039;&#039;: Una mano con una distribuzione di carte equilibrata, senza vuoti o singleton e con al massimo un doubleton. Le distribuzioni tipiche sono 4-3-3-3, 4-4-3-2 e 5-3-3-2.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Blackwood&#039;&#039;&#039;: Una famosa convenzione dichiarativa (solitamente la licita di 4SA) usata per chiedere al compagno il numero di Assi (e talvolta Re) posseduti, al fine di esplorare la possibilità di giocare uno slam.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Colore&#039;&#039;&#039;: Uno dei quattro semi delle carte: Fiori (♣), Quadri (♦), Cuori (♥) e Picche (♠).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Contratto&#039;&#039;&#039;: L&#039;impegno finale preso da una coppia durante la fase di dichiarazione. Consiste in un numero di prese da effettuare (da 1 a 7) e un seme di atout (o Senza Atout).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Contro&#039;&#039;&#039; (in inglese &#039;&#039;Double&#039;&#039;): Una dichiarazione che aumenta il punteggio (sia in positivo che in negativo) del contratto avversario. Può avere un significato informativo (per descrivere la propria mano) o punitivo (se si pensa che gli avversari non possano mantenere il contratto).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Convenzione&#039;&#039;&#039;: Un accordo tra compagni su un significato artificiale o specifico di una determinata licita, che non corrisponde al suo significato naturale. Esempi famosi sono la Stayman e la Jacoby Transfer.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Copertura&#039;&#039;&#039;: Una carta che può vincere una presa dopo che una carta più alta dello stesso seme è già stata giocata.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Cue Bid&#039;&#039;&#039;: Una licita in un colore mostrato dagli avversari. Viene usata come licita forzante per mostrare una mano forte e chiedere maggiori informazioni al compagno.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Dichiarazione&#039;&#039;&#039; (o &#039;&#039;Licita&#039;&#039;): Ogni offerta fatta da un giocatore durante la fase di licitazione (es. &amp;quot;1 Cuori&amp;quot;, &amp;quot;Passo&amp;quot;, &amp;quot;Contro&amp;quot;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Dichiarante&#039;&#039;&#039;: Il giocatore della coppia che per primo ha dichiarato il seme (o Senza Atout) del contratto finale. Il dichiarante gioca sia le proprie carte che quelle del morto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Difesa&#039;&#039;&#039;: La coppia che non si è aggiudicata il contratto e che cerca di impedire al dichiarante di realizzare le prese necessarie.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Distribuzione&#039;&#039;&#039;: La suddivisione delle 13 carte di una mano nei quattro semi.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Fallo&#039;&#039;&#039; (o &#039;&#039;Scarto&#039;&#039;): Giocare una carta di un seme diverso da quello di uscita, quando non si possiedono più carte di quel seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Fit&#039;&#039;&#039;: Avere un numero sufficiente di carte di un determinato seme in combinazione con il proprio compagno (solitamente almeno 8 carte in totale) per poterlo eleggere a seme di atout.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Forzante&#039;&#039;&#039;: Una dichiarazione che obbliga il compagno a parlare di nuovo, a meno che non intervengano gli avversari. Indica una mano forte o una situazione in cui è necessario scambiare altre informazioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Grande Slam&#039;&#039;&#039;: Un contratto al livello di 7, che richiede di effettuare tutte le 13 prese possibili.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Gioco&#039;&#039;&#039;: La fase della smazzata che segue la dichiarazione, in cui i giocatori giocano le loro carte per effettuare le prese.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Impasso&#039;&#039;&#039; (in inglese &#039;&#039;Finesse&#039;&#039;): Una tecnica di gioco che consiste nel tentare di vincere una presa con una carta più bassa, sperando che una carta avversaria più alta sia in una posizione favorevole.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Invito&#039;&#039;&#039;: Una dichiarazione che non è forzante, ma che invita il compagno a licitare un contratto superiore (solitamente a manche o a slam) se ha una mano non minima per le sue precedenti dichiarazioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Licita&#039;&#039;&#039;: Vedi [[#D|Dichiarazione]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Linea&#039;&#039;&#039;: Si usa per indicare le due coppie. La &#039;&#039;linea Nord-Sud&#039;&#039; e la &#039;&#039;linea Est-Ovest&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Manche&#039;&#039;&#039;: Un contratto il cui punteggio, se realizzato, è sufficiente a vincere una partita (es. 3 Senza Atout, 4 Cuori, 4 Picche, 5 Fiori, 5 Quadri).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Mano&#039;&#039;&#039;: Le 13 carte iniziali distribuite a un giocatore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Morto&#039;&#039;&#039; (in inglese &#039;&#039;Dummy&#039;&#039;): Il compagno del dichiarante. Dopo l&#039;attacco iniziale, il morto stende le proprie carte scoperte sul tavolo e non partecipa più attivamente al gioco; sarà il dichiarante a giocare le carte per lui.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Nobili (Semi)&#039;&#039;&#039;: I semi di Cuori (♥) e Picche (♠), chiamati così perché valgono di più nel calcolo del punteggio (30 punti per presa) rispetto ai semi minori.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Onori&#039;&#039;&#039;: Le cinque carte di maggior valore in ogni seme: Asso (A), Re (K), Donna (Q), Fante (J) e Dieci (10).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Passo&#039;&#039;&#039;: Dichiarazione con cui un giocatore decide di non fare nessuna licita, contro o surcontro. Se tutti e quattro i giocatori passano all&#039;inizio, le carte vengono raccolte e ridistribuite.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Piccolo Slam&#039;&#039;&#039;: Un contratto al livello di 6, che richiede di effettuare 12 prese su 13.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Presa&#039;&#039;&#039;: L&#039;insieme delle quattro carte giocate in un round (una per ogni giocatore). La presa è vinta dal giocatore che ha giocato la carta più alta nel seme di uscita, o l&#039;atout più alto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Punti Onori (PO)&#039;&#039;&#039;: Un metodo di valutazione della forza di una mano basato sugli onori posseduti: Asso=4, Re=3, Donna=2, Fante=1.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Qualificante&#039;&#039;&#039;: Una mano o una licita che soddisfa i requisiti minimi per una determinata azione, secondo il sistema dichiarativo della coppia.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Rientro&#039;&#039;&#039;: Una carta alta che permette di guadagnare la presa e quindi il controllo del gioco, consentendo di muovere da una delle due mani della coppia (dichiarante o morto).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Rispondente&#039;&#039;&#039;: Il compagno dell&#039;apertore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Scarto&#039;&#039;&#039;: Vedi [[#F|Fallo]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Senza Atout (SA)&#039;&#039;&#039;: Un contratto in cui non esiste un seme di atout. La presa è vinta semplicemente dalla carta più alta nel seme di uscita.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Singleton&#039;&#039;&#039;: Possedere una sola carta di un determinato seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Squeeze&#039;&#039;&#039;: Una tecnica di gioco avanzata con cui il dichiarante, giocando una carta vincente, costringe uno o entrambi i difensori a scartare una carta che custodiva una presa futura.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Stayman&#039;&#039;&#039;: Una convenzione (solitamente la licita di 2 Fiori in risposta a un&#039;apertura a Senza Atout) usata per chiedere all&#039;apertore se possiede un seme nobile di almeno quattro carte.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Surcontro&#039;&#039;&#039; (in inglese &#039;&#039;Redouble&#039;&#039;): Una dichiarazione fatta dopo un &amp;quot;Contro&amp;quot; avversario, che aumenta ulteriormente il valore del punteggio del contratto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Taglio&#039;&#039;&#039; (o &#039;&#039;Tuffo&#039;&#039;): Giocare una carta di atout quando non si possiedono più carte del seme di uscita. Il taglio permette di vincere una presa che altrimenti andrebbe agli avversari.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Vulnerabile&#039;&#039;&#039;: Condizione di una coppia in una determinata smazzata che aumenta i bonus e le penalità. La vulnerabilità cambia secondo uno schema predefinito durante una partita.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Vuoto&#039;&#039;&#039;: Non possedere alcuna carta di un determinato seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Voci correlate ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Bridge]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Federazione Italiana Gioco Bridge]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Bridge]]&lt;br /&gt;
[[Categoria:Glossario]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Pagina_principale&amp;diff=1804</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Pagina_principale&amp;diff=1804"/>
		<updated>2026-10-16T10:52:36Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Predisposizione traduzione&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Articolo}}&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= Benvenuti su &#039;&#039;&#039;BridgePedia&#039;&#039;&#039; =&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BridgePedia&#039;&#039;&#039; è il punto di riferimento collaborativo per tutti i giocatori, le coppie e le associazioni che desiderano raccogliere, documentare e condividere le conoscenze sul gioco del bridge.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Qui troverai regole, licite, convenzioni e carte delle convenzioni, aggiornate e mantenute direttamente dagli utenti della comunità.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Obiettivi ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Rendere facilmente accessibili le [[Regole del bridge|regole ufficiali del bridge]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Documentare in modo strutturato le principali [[Licite|sequenze di licita]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Creare un archivio aggiornato delle [[Convenzioni|convenzioni più usate]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Fornire uno spazio per le [[Carte delle convenzioni|carte delle convenzioni di coppia e di squadra]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Offrire alle associazioni uno strumento condiviso per gestire e pubblicare materiali tecnici.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Come contribuire ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Ogni utente registrato può modificare o integrare i contenuti esistenti.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Per iniziare, visita la guida: [[Aiuto:Come modificare una pagina]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Usa i link interni (tra [[ ]]) per creare nuove voci.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Struttura del Wiki ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Storia del bridge]] - come è nato e si è evoluto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Regole del bridge]] – regolamenti ufficiali e adattamenti locali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Licite]] – spiegazioni e sequenze tipiche.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Convenzioni]] – elenchi e descrizioni di convenzioni (Stayman, Blackwood, ecc.).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Carte delle convenzioni]] – schede personalizzate di coppia o associazione.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Associazioni di bridge]] – spazi dedicati ad associazioni e circoli.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Glossario del bridge]] – termini e definizioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Linee guida ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Mantieni i contenuti chiari e neutrali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Cita fonti affidabili quando riporti regole ufficiali o documenti federali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Usa una terminologia coerente con il lessico del bridge.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Risorse utili ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[https://www.federbridge.it/ FIGB – Federazione Italiana Gioco Bridge]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[https://www.worldbridge.org/ WBF – World Bridge Federation]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{Nota|Questa è una piattaforma collaborativa: ogni contributo è prezioso per arricchire la conoscenza condivisa sul bridge.}}&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Glossario_del_bridge&amp;diff=1803</id>
		<title>Glossario del bridge</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Glossario_del_bridge&amp;diff=1803"/>
		<updated>2026-10-16T10:52:23Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Predisposizione traduzione&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Glossario}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Questo glossario definisce i termini più comuni utilizzati nel gioco del [[:it:bridge|bridge]], sia nella fase di dichiarazione che in quella di gioco della carta.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
L&#039;elenco è in ordine alfabetico. Clicca su una lettera per navigare direttamente alla sezione corrispondente.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; font-size:1.2em; margin-bottom:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[#A|A]] · [[#B|B]] · [[#C|C]] · [[#D|D]] · [[#F|F]] · [[#G|G]] · [[#I|I]] · [[#L|L]] · [[#M|M]] · [[#N|N]] · [[#O|O]] · [[#P|P]] · [[#Q|Q]] · [[#R|R]] · [[#S|S]] · [[#T|T]] · [[#V|V]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== A ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Apertura&#039;&#039;&#039;: La prima dichiarazione di un colore o a Senza Atout (diversa da &amp;quot;Passo&amp;quot;) effettuata in una smazzata.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Appoggio&#039;&#039;&#039;: Dichiarazione che supporta il colore licitato dal compagno, indicando di possedere un buon numero di carte in quel seme (solitamente almeno tre).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Atout&#039;&#039;&#039; (o &#039;&#039;Atù&#039;&#039;, in inglese &#039;&#039;Trump&#039;&#039;): Il seme che viene scelto come briscola durante la licitazione e che comanda su tutti gli altri semi durante il gioco della carta.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Attacco&#039;&#039;&#039;: La prima carta giocata dal difensore che si trova alla sinistra del dichiarante, all&#039;inizio del gioco della carta. La scelta della carta d&#039;attacco è un momento cruciale della difesa.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Bilanciata (Mano)&#039;&#039;&#039;: Una mano con una distribuzione di carte equilibrata, senza vuoti o singleton e con al massimo un doubleton. Le distribuzioni tipiche sono 4-3-3-3, 4-4-3-2 e 5-3-3-2.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Blackwood&#039;&#039;&#039;: Una famosa convenzione dichiarativa (solitamente la licita di 4SA) usata per chiedere al compagno il numero di Assi (e talvolta Re) posseduti, al fine di esplorare la possibilità di giocare uno slam.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Colore&#039;&#039;&#039;: Uno dei quattro semi delle carte: Fiori (♣), Quadri (♦), Cuori (♥) e Picche (♠).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Contratto&#039;&#039;&#039;: L&#039;impegno finale preso da una coppia durante la fase di dichiarazione. Consiste in un numero di prese da effettuare (da 1 a 7) e un seme di atout (o Senza Atout).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Contro&#039;&#039;&#039; (in inglese &#039;&#039;Double&#039;&#039;): Una dichiarazione che aumenta il punteggio (sia in positivo che in negativo) del contratto avversario. Può avere un significato informativo (per descrivere la propria mano) o punitivo (se si pensa che gli avversari non possano mantenere il contratto).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Convenzione&#039;&#039;&#039;: Un accordo tra compagni su un significato artificiale o specifico di una determinata licita, che non corrisponde al suo significato naturale. Esempi famosi sono la Stayman e la Jacoby Transfer.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Copertura&#039;&#039;&#039;: Una carta che può vincere una presa dopo che una carta più alta dello stesso seme è già stata giocata.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Cue Bid&#039;&#039;&#039;: Una licita in un colore mostrato dagli avversari. Viene usata come licita forzante per mostrare una mano forte e chiedere maggiori informazioni al compagno.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Dichiarazione&#039;&#039;&#039; (o &#039;&#039;Licita&#039;&#039;): Ogni offerta fatta da un giocatore durante la fase di licitazione (es. &amp;quot;1 Cuori&amp;quot;, &amp;quot;Passo&amp;quot;, &amp;quot;Contro&amp;quot;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Dichiarante&#039;&#039;&#039;: Il giocatore della coppia che per primo ha dichiarato il seme (o Senza Atout) del contratto finale. Il dichiarante gioca sia le proprie carte che quelle del morto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Difesa&#039;&#039;&#039;: La coppia che non si è aggiudicata il contratto e che cerca di impedire al dichiarante di realizzare le prese necessarie.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Distribuzione&#039;&#039;&#039;: La suddivisione delle 13 carte di una mano nei quattro semi.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Fallo&#039;&#039;&#039; (o &#039;&#039;Scarto&#039;&#039;): Giocare una carta di un seme diverso da quello di uscita, quando non si possiedono più carte di quel seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Fit&#039;&#039;&#039;: Avere un numero sufficiente di carte di un determinato seme in combinazione con il proprio compagno (solitamente almeno 8 carte in totale) per poterlo eleggere a seme di atout.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Forzante&#039;&#039;&#039;: Una dichiarazione che obbliga il compagno a parlare di nuovo, a meno che non intervengano gli avversari. Indica una mano forte o una situazione in cui è necessario scambiare altre informazioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== G ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Grande Slam&#039;&#039;&#039;: Un contratto al livello di 7, che richiede di effettuare tutte le 13 prese possibili.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Gioco&#039;&#039;&#039;: La fase della smazzata che segue la dichiarazione, in cui i giocatori giocano le loro carte per effettuare le prese.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Impasso&#039;&#039;&#039; (in inglese &#039;&#039;Finesse&#039;&#039;): Una tecnica di gioco che consiste nel tentare di vincere una presa con una carta più bassa, sperando che una carta avversaria più alta sia in una posizione favorevole.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Invito&#039;&#039;&#039;: Una dichiarazione che non è forzante, ma che invita il compagno a licitare un contratto superiore (solitamente a manche o a slam) se ha una mano non minima per le sue precedenti dichiarazioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== L ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Licita&#039;&#039;&#039;: Vedi [[#D|Dichiarazione]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Linea&#039;&#039;&#039;: Si usa per indicare le due coppie. La &#039;&#039;linea Nord-Sud&#039;&#039; e la &#039;&#039;linea Est-Ovest&#039;&#039;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== M ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Manche&#039;&#039;&#039;: Un contratto il cui punteggio, se realizzato, è sufficiente a vincere una partita (es. 3 Senza Atout, 4 Cuori, 4 Picche, 5 Fiori, 5 Quadri).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Mano&#039;&#039;&#039;: Le 13 carte iniziali distribuite a un giocatore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Morto&#039;&#039;&#039; (in inglese &#039;&#039;Dummy&#039;&#039;): Il compagno del dichiarante. Dopo l&#039;attacco iniziale, il morto stende le proprie carte scoperte sul tavolo e non partecipa più attivamente al gioco; sarà il dichiarante a giocare le carte per lui.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Nobili (Semi)&#039;&#039;&#039;: I semi di Cuori (♥) e Picche (♠), chiamati così perché valgono di più nel calcolo del punteggio (30 punti per presa) rispetto ai semi minori.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== O ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Onori&#039;&#039;&#039;: Le cinque carte di maggior valore in ogni seme: Asso (A), Re (K), Donna (Q), Fante (J) e Dieci (10).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Passo&#039;&#039;&#039;: Dichiarazione con cui un giocatore decide di non fare nessuna licita, contro o surcontro. Se tutti e quattro i giocatori passano all&#039;inizio, le carte vengono raccolte e ridistribuite.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Piccolo Slam&#039;&#039;&#039;: Un contratto al livello di 6, che richiede di effettuare 12 prese su 13.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Presa&#039;&#039;&#039;: L&#039;insieme delle quattro carte giocate in un round (una per ogni giocatore). La presa è vinta dal giocatore che ha giocato la carta più alta nel seme di uscita, o l&#039;atout più alto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Punti Onori (PO)&#039;&#039;&#039;: Un metodo di valutazione della forza di una mano basato sugli onori posseduti: Asso=4, Re=3, Donna=2, Fante=1.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Qualificante&#039;&#039;&#039;: Una mano o una licita che soddisfa i requisiti minimi per una determinata azione, secondo il sistema dichiarativo della coppia.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== R ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Rientro&#039;&#039;&#039;: Una carta alta che permette di guadagnare la presa e quindi il controllo del gioco, consentendo di muovere da una delle due mani della coppia (dichiarante o morto).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Rispondente&#039;&#039;&#039;: Il compagno dell&#039;apertore.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== S ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Scarto&#039;&#039;&#039;: Vedi [[#F|Fallo]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Senza Atout (SA)&#039;&#039;&#039;: Un contratto in cui non esiste un seme di atout. La presa è vinta semplicemente dalla carta più alta nel seme di uscita.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Singleton&#039;&#039;&#039;: Possedere una sola carta di un determinato seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Squeeze&#039;&#039;&#039;: Una tecnica di gioco avanzata con cui il dichiarante, giocando una carta vincente, costringe uno o entrambi i difensori a scartare una carta che custodiva una presa futura.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Stayman&#039;&#039;&#039;: Una convenzione (solitamente la licita di 2 Fiori in risposta a un&#039;apertura a Senza Atout) usata per chiedere all&#039;apertore se possiede un seme nobile di almeno quattro carte.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Surcontro&#039;&#039;&#039; (in inglese &#039;&#039;Redouble&#039;&#039;): Una dichiarazione fatta dopo un &amp;quot;Contro&amp;quot; avversario, che aumenta ulteriormente il valore del punteggio del contratto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Taglio&#039;&#039;&#039; (o &#039;&#039;Tuffo&#039;&#039;): Giocare una carta di atout quando non si possiedono più carte del seme di uscita. Il taglio permette di vincere una presa che altrimenti andrebbe agli avversari.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== V ==&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Vulnerabile&#039;&#039;&#039;: Condizione di una coppia in una determinata smazzata che aumenta i bonus e le penalità. La vulnerabilità cambia secondo uno schema predefinito durante una partita.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;&#039;&#039;&#039;Vuoto&#039;&#039;&#039;: Non possedere alcuna carta di un determinato seme.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Voci correlate ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Bridge]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Federazione Italiana Gioco Bridge]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Bridge]]&lt;br /&gt;
[[Categoria:Glossario]]&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Pagina_principale&amp;diff=1802</id>
		<title>Pagina principale</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Pagina_principale&amp;diff=1802"/>
		<updated>2026-10-16T10:52:23Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Predisposizione traduzione&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Articolo}}&lt;br /&gt;
&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= Benvenuti su &#039;&#039;&#039;BridgePedia&#039;&#039;&#039; =&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;BridgePedia&#039;&#039;&#039; è il punto di riferimento collaborativo per tutti i giocatori, le coppie e le associazioni che desiderano raccogliere, documentare e condividere le conoscenze sul gioco del bridge.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
Qui troverai regole, licite, convenzioni e carte delle convenzioni, aggiornate e mantenute direttamente dagli utenti della comunità.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Obiettivi ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Rendere facilmente accessibili le [[Regole del bridge|regole ufficiali del bridge]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Documentare in modo strutturato le principali [[Licite|sequenze di licita]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Creare un archivio aggiornato delle [[Convenzioni|convenzioni più usate]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Fornire uno spazio per le [[Carte delle convenzioni|carte delle convenzioni di coppia e di squadra]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Offrire alle associazioni uno strumento condiviso per gestire e pubblicare materiali tecnici.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Come contribuire ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Ogni utente registrato può modificare o integrare i contenuti esistenti.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Per iniziare, visita la guida: [[Aiuto:Come modificare una pagina]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Usa i link interni (tra [[ ]]) per creare nuove voci.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Struttura del Wiki ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Storia del bridge]] - come è nato e si è evoluto.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Regole del bridge]] – regolamenti ufficiali e adattamenti locali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Licite]] – spiegazioni e sequenze tipiche.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Convenzioni]] – elenchi e descrizioni di convenzioni (Stayman, Blackwood, ecc.).&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Carte delle convenzioni]] – schede personalizzate di coppia o associazione.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Associazioni di bridge]] – spazi dedicati ad associazioni e circoli.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[[Glossario del bridge]] – termini e definizioni.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Linee guida ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Mantieni i contenuti chiari e neutrali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Cita fonti affidabili quando riporti regole ufficiali o documenti federali.&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;Usa una terminologia coerente con il lessico del bridge.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Risorse utili ==&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[https://www.federbridge.it/ FIGB – Federazione Italiana Gioco Bridge]&amp;lt;/translate&amp;gt;&lt;br /&gt;
* &amp;lt;translate&amp;gt;[https://www.worldbridge.org/ WBF – World Bridge Federation]&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{Nota|Questa è una piattaforma collaborativa: ogni contributo è prezioso per arricchire la conoscenza condivisa sul bridge.}}&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=BridgePedia:Glossario_multilingua&amp;diff=1779</id>
		<title>BridgePedia:Glossario multilingua</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=BridgePedia:Glossario_multilingua&amp;diff=1779"/>
		<updated>2026-10-16T07:02:29Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Fase 3: glossario multilingua (pagina di servizio)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Glossario di riferimento per le traduzioni del wiki (it, en, fr, es, de). Pagina di servizio, fuori dal namespace principale.&lt;br /&gt;
&lt;br /&gt;
== Regole d&#039;uso ==&lt;br /&gt;
* I termini della colonna &#039;&#039;&#039;it&#039;&#039;&#039; sono la fonte: le altre colonne sono traduzioni da allineare a essa.&lt;br /&gt;
* Le notazioni dei tag BridgeCards (&amp;lt;code&amp;gt;&amp;amp;lt;bidding&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;hand&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;deal&amp;amp;gt;&amp;lt;/code&amp;gt;) non si traducono mai.&lt;br /&gt;
* I nomi delle convenzioni invarianti restano uguali in tutte le lingue (vedi sezione dedicata).&lt;br /&gt;
* Le traduzioni in en, fr, es, de sono tutte &#039;&#039;&#039;da verificare con madrelingua&#039;&#039;&#039; (colonna stato).&lt;br /&gt;
&lt;br /&gt;
== Termini fondamentali ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! it !! en !! fr !! es !! de !! stato&lt;br /&gt;
|-&lt;br /&gt;
| fiori || clubs || trèfle || tréboles || Kreuz (Treff) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| quadri || diamonds || carreau || diamantes || Karo || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| cuori || hearts || cœur || corazones || Herz || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| picche || spades || pique || picas || Pik || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| senza atout || no trump || sans atout || sin triunfos || Sans Atout || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| Passo || Pass || Passe || Paso || Passe (Pass) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| Contro || Double || Contre || Contra || Kontra || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| Surcontro || Redouble || Surcontre || Recontra || Rekontra || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| apertura || opening bid || ouverture || apertura || Eröffnung || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| risposta || response || réponse || respuesta || Antwort || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| rispondente || responder || répondant || respondedor || Antwortender || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| apertore || opener || ouvreur || abridor || Eröffner || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| manche || game || manche || manga || Manche || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| slam || slam || chelem || slam || Slam || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| piccolo slam || small slam || petit chelem || pequeño slam || Kleinslam || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| grande slam || grand slam || grand chelem || gran slam || Großslam || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| licita || bidding || enchères || subasta (licitación) || Reizung || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| dichiarante || declarer || déclarant || declarante || Alleinspieler || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| difensore || defender || défenseur || defensor || Verteidiger || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| attacco || opening lead || entame || salida || Ausspiel || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| morto || dummy || mort || muerto || Dummy (Blatt des Tisches) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| mano || hand || main || mano || Blatt (Hand) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| smazzata || deal (board) || donne || mano (reparto) || Spiel (Board) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| presa || trick || levée || baza || Stich || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| atout || trump || atout || triunfo || Trumpf || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| impasse || finesse || impasse || impasse || Schnitt (Impasse) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| singolo || singleton || singleton || singleton || Single (Singleton) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| vuoto (chicane) || void || chicane || fallo || Chicane (Renonce) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| controllo || control || contrôle || control || Kontrolle || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| cue-bid || cue-bid || cue-bid || cue-bid || Cue-Bid || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| convenzione || convention || convention || convención || Konvention || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| sistema || system || système || sistema || System || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| surlicita || overcall || intervention || intervención || Intervention || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| fit || fit || fit || fit || Fit || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| zona (vulnerabilità) || vulnerability || vulnérabilité || vulnerabilidad || Gefahrenlage (Zone) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| mazziere || dealer || donneur || dador || Teiler (Geber) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| torneo || tournament || tournoi || torneo || Turnier || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| coppie || pairs || paires || parejas || Paarturnier || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| squadre || teams || équipes (par quatre) || equipos || Mannschaft (Teams) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| direttore (arbitro) || director (referee) || directeur de jeu (arbitre) || director (árbitro) || Turnierleiter (Schiedsrichter) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| nome (etichetta template) || Name || Nom || Nombre || Name || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| tipologia (etichetta template) || Type || Type || Tipo || Typ || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| scopo (etichetta template) || Purpose || But || Propósito || Zweck || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| trigger (etichetta template) || Trigger (when to use) || Déclencheur (quand l’utiliser) || Desencadenante (cuándo se usa) || Auslöser (wann man es einsetzt) || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| risposte / sviluppi (etichetta template) || Responses / developments || Réponses / développements || Respuestas / desarrollos || Antworten / Fortsetzungen || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| note (etichetta template) || Notes || Notes || Notas || Hinweise || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|-&lt;br /&gt;
| tabella attacchi (etichetta template) || Leads table || Tableau des entames || Tabla de salidas || Ausspieltabelle || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Nomi di convenzioni invarianti ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Nome !! Regola !! stato&lt;br /&gt;
|-&lt;br /&gt;
| Stayman, Jacoby, Blackwood, Gerber, Texas, Splinter, Smith, Michaels, Unusual, Landy || Restano invariati in tutte le lingue (it, en, fr, es, de). || it: verificato; altre lingue: da verificare con madrelingua&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fonte ==&lt;br /&gt;
Glossario redatto dalla redazione di BridgePedia. Non deriva da una fonte esterna citabile: va validato con madrelingua e confrontato con i glossari ufficiali (WBF, EBL) prima di essere considerato definitivo.&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
	<entry>
		<id>https://bridgepedia.it/index.php?title=Categoria:Traduzioni_da_verificare_(de)&amp;diff=1778</id>
		<title>Categoria:Traduzioni da verificare (de)</title>
		<link rel="alternate" type="text/html" href="https://bridgepedia.it/index.php?title=Categoria:Traduzioni_da_verificare_(de)&amp;diff=1778"/>
		<updated>2026-10-16T07:02:22Z</updated>

		<summary type="html">&lt;p&gt;Lpala: Fase 3: pagina di servizio traduzioni&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pagine tradotte automaticamente in tedesco (de) e non ancora verificate da una persona. Categoria principale: [[:Categoria:Traduzioni da verificare]].&lt;/div&gt;</summary>
		<author><name>Lpala</name></author>
	</entry>
</feed>