In APL, puoi scrivere funzioni tacite, chiamate treni . Il modo in cui funzionano è irrilevante per questa sfida. Ecco i diversi modi in cui possono essere raggruppati, usando ⍴
come funzione:
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
L'ordine rimane lo stesso. La procedura è che fintanto che ci sono rigorosamente più di 3 funzioni, le ultime 3 funzioni sono raggruppate in una funzione. Se incontriamo un treno annidato, tra parentesi quello prima, per continuare. Ecco la procedura applicata a ⍴⍴⍴⍴⍴⍴
:
Step 0: ⍴⍴⍴⍴⍴⍴
There are strictly more than 3 functions, repeat.
Step 1: ⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
Step 2: ⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Ecco la stessa procedura applicata a ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
:
Step 0: ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴
There are 3 or less functions, we're done.
Step 1: ⍴⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Step 1: ⍴⍴⍴(⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴
There are 3 or less functions, we're done.
Step 2: ⍴⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴))
There are strictly more than 3 functions, repeat.
Step 3: ⍴(⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)))
There are 3 functions or less, we're done.
Ingresso
Per questa sfida, l'input sarà semplificato. Ciò significa che è possibile scegliere 2 caratteri diversi per l'apertura e la chiusura delle parentesi e 1 carattere per le funzioni, diversi da quelli scelti per le parentesi. I caratteri scelti devono essere coerenti. L'input non sarà vuoto e non conterrà parentesi senza contenuto (ad es ()
.).
Produzione
Ancora una volta, puoi scegliere 3 caratteri diversi, 2 per le parentesi e 1 per le funzioni. Si noti che non devono necessariamente essere uguali a quelli scelti per l'input, ma devono essere coerenti.
Regole
- Se ci sono parentesi che racchiudono solo una funzione al loro interno nell'input, è necessario rimuoverle nell'output. L'output potrebbe non contenere parentesi non necessarie (ovvero racchiudere una sola funzione o racchiudere l'intero output).
- Non è necessario implementare l'algoritmo utilizzato qui, purché la soluzione sia valida per questa sfida.
- Input e output sono stringhe nel formato spiegato nelle sezioni Input e Output. L'input avrà almeno un carattere.
- L'uso delle scappatoie standard è severamente vietato.
- Questo è code-golf , quindi vince la risposta più breve. Tuttavia, non ci sarà una risposta accettata, poiché si tratta di un concorso per lingua e per incoraggiare la risposta in lingue in cui questo compito comporterebbe un codice più lungo rispetto al codice scritto in altre lingue.
Casi test
I caratteri utilizzati qui sono ()⍴
, è necessario sostituirli con i caratteri scelti.
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
Questa sfida è stata pubblicata nella Sandbox. Se si dispone del privilegio richiesto, è possibile visualizzare il post sandbox qui .