Acronimo per frase


12

Compito:

Crea un programma che prenderà un acronimo come input, ad esempio dftba, e generi alcune frasi possibili che l'acronimo potrebbe rappresentare. È possibile utilizzare l'elenco di parole come input di parole. Ispirato da https://www.youtube.com/watch?v=oPUxnpIWt6E

Esempio:

input: dftba
output: don't forget to be awesome

Regole:

  • Il tuo programma non può generare la stessa frase ogni volta per lo stesso acronimo, ci deve essere randomizzazione
  • L'input sarà tutto minuscolo
  • Pubblica alcuni esempi (input e output)
  • È accettata qualsiasi lingua
  • È un , quindi molti voti vincono!

Si prega di mostrare un esempio di output.
Mukul Kumar

@MukulKumar lo ha aggiunto
TheDoctor il

1
Deve essere significativo? o qualsiasi combinazione?
Mukul Kumar

Non ha bisogno di essere significativo
TheDoctor

Quante volte è permesso all'utente di eseguire il programma? Ad un certo punto il programma non può non infrangere la regola n. 1.
Mr Lister

Risposte:


8

HTML, CSS e JavaScript

HTML

<div id='word-shower'></div>
<div id='letter-container'></div>

CSS

.letter {
    border: 1px solid black;
    padding: 5px;
}

#word-shower {
    border-bottom: 3px solid blue;
    padding-bottom: 5px;
}

JS

var acronym = 'dftba', $letters = $('#letter-container')
for (var i = 0; i < acronym.length; i++) {
    $letters.append($('<div>').text(acronym[i]).attr('class', 'letter'))
}

var $word = $('#word-shower')
setInterval(function() {
    $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://randomword.setgetgo.com/get.php') + '&callback=?', function(word) {
        word = word.contents.toLowerCase()
        $word.text(word)
        $letters.children().each(function() {
            if (word[0] == this.innerText) {
                this.innerText = word
                return
            }
        })
    })
}, 1000)

Utilizza un generatore di parole casuale e mostra risultati in tempo reale mentre cerca le parole.

Ecco un violino se vuoi eseguirlo da solo.

Ecco una GIF dell'output:

uscita animata


7

Giava

Recupera un elenco di parole da wiktionary. Scegli una parola casuale da quell'elenco che inizia con la lettera corretta. Quindi utilizza Google in modo ricorsivo per cercare possibili parole successive. Emette un elenco di possibilità. Se lo riesegui con lo stesso acronimo, otterrai risultati diversi.

import java.io.*;
import java.net.*;
import java.util.*;

public class Acronym {

    static List<List<String>> wordLists = new ArrayList<List<String>>();
    static {for(int i=0; i<26; i++) wordLists.add(new ArrayList<String>());}
    static String acro;

    public static void main(String[] args) throws Exception {
        acro = args[0].toLowerCase();

        //get a wordlist and put words into wordLists by first letter
        String s = "http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/PG/2006/04/1-10000";
        URL url = new URL(s);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            if(inputLine.contains("title")) {
                int start = inputLine.indexOf("title=\"");
                int end = inputLine.lastIndexOf("\">");
                if(start>=0 && end > start) { 
                    String word = inputLine.substring(start+7,end).toLowerCase();
                    if(!word.contains("'") && !word.contains(" ")) {
                        char firstChar = word.charAt(0);
                        if(firstChar >= 'a' && firstChar <='z') {
                            wordLists.get(firstChar-'a').add(word);
                        }
                    }
                }
            }
        }

        //choose random word from wordlist starting with first letter of acronym
        Random rand = new Random();
        char firstChar = acro.charAt(0);
        List<String> firstList = wordLists.get(firstChar-'a');
        String firstWord = firstList.get(rand.nextInt(firstList.size()));

        getSuggestions(firstWord,1);

    }

    static void getSuggestions(String input,int index) throws Exception {
        //ask googleSuggest for suggestions that start with search plus the next letter as marked by index
        String googleSuggest = "http://google.com/complete/search?output=toolbar&q=";
        String search = input + " " + acro.charAt(index);
        String searchSub = search.replaceAll(" ","%20");

        URL url = new URL(googleSuggest + searchSub);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            String[] parts = inputLine.split("\"");
            for(String part : parts) {
                if(part.startsWith(search)) {
                    //now get suggestions for this part plus next letter in acro
                    if(index+1<acro.length()) {
                        String[] moreParts = part.split(" ");
                        Thread.sleep(100);
                        getSuggestions(input + " " + moreParts[index],index+1);
                    }
                    else {
                        String[] moreParts = part.split(" ");
                        System.out.println(input + " " + moreParts[index]);
                    }
                }
            }
        }
        in.close();
    }
}

Uscita campione:

$ java -jar Acronym.jar ght
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horror thriller
great horror tv
great horror thriller
great horror titles
great horror tv
great holiday traditions
great holiday treats
great holiday toasts
great holiday tech
great holiday travel
great holiday treat
great holiday tips
great holiday treat
great holiday toys
great holiday tour
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle

Sfortunatamente, l'URL di Google suggerisce di smettere di funzionare dopo un po '- forse il mio IP è stato inserito nella lista nera di Google per uso improprio ?!


5

Rubino

così rubino. molti doge. Wow.

Versione online

@prefix = %w[all amazingly best certainly crazily deadly extra ever few great highly incredibly jolly known loftily much many never no like only pretty quirkily really rich sweet such so total terribly utterly very whole xtreme yielding zippily]
@adjective = %w[appealing app apl attractive brave bold better basic common challenge c++ creative credit doge durable dare enticing entertain extreme fail fabulous few favourite giant gigantic google hello happy handy interesting in improve insane jazz joy j java known kind kiwi light laugh love lucky low more mesmerise majestic open overflow opinion opera python power point popular php practice quirk quit ruby read ready stunning stack scala task teaching talking tiny technology unexpected usual useful urban voice vibrant value word water wow where xi xanthic xylophone young yummy zebra zonk zen zoo]

def doge(input)
  wow = ""
  input.chars.each_slice(2) do |char1, char2|
    if char2 == nil
      wow << (@prefix + @adjective).sample(1)[0] + "."
      break
    end
    wow << @prefix.select{|e| e[0] == char1}.sample(1)[0]
    wow << " "
    wow << @adjective.select{|e| e[0] == char2}.sample(1)[0]
    wow << ". "
  end
  wow
end

puts doge("dftba")
puts doge("asofiejgie")
puts doge("iglpquvi")

Esempi:

deadly favourite. terribly better. challenge.
all scala. only favourite. incredibly enticing. jolly giant. incredibly extreme. 
incredibly gigantic. loftily popular. quirkily usual. very interesting.

sicuramente leggero. sempre voce. extra pronto. pila extra. terribilmente attraente. mai sbalorditivo. divertire tutto. ricco stupendo. unico preferito. incredibilmente rubino.
Izabera,

fallimento mortale. terribilmente coraggioso. fortunato. tutto scala. solo alcuni. incredibilmente divertente. jolly google. incredibilmente divertente. incredibilmente google. loftily pitone. stranamente inaspettato. molto migliorare.

4

matematica

Alcuni termini che compaiono comunemente negli acronimi.

terms = {"Abbreviated", "Accounting", "Acquisition", "Act", "Action", "Actions", "Activities", "Administrative", "Advisory", "Afloat", "Agency", "Agreement", "Air", "Aircraft", "Aligned", "Alternatives", "Analysis", "Anti-Surveillance", "Appropriation", "Approval", "Architecture", "Assessment", "Assistance", "Assistant", "Assurance", "Atlantic", "Authority", "Aviation", "Base", "Based", "Battlespace", "Board", "Breakdown", "Budget", "Budgeting", "Business", "Capabilities", "Capability", "Capital", "Capstone", "Category", "Center", "Centric", "Chairman", "Change", "Changes", "Chief", "Chief,", "Chiefs", "Closure", "College", "Combat", "Command", "Commandant", "Commander","Commander,", "Commanders", "Commerce", "Common", "Communications", "Communities", "Competency", "Competition", "Component", "Comptroller", "Computer", "Computers,", "Concept", "Conference", "Configuration", "Consolidated", "Consulting", "Contract", "Contracting", "Contracts", "Contractual", "Control", "Cooperative", "Corps", "Cost", "Council", "Counterintelligence", "Course", "Daily", "Data", "Date", "Decision", "Defense", "Deficiency", "Demonstration", "Department", "Depleting", "Deployment", "Depot", "Deputy", "Description", "Deskbook", "Determination", "Development", "Direct", "Directed", "Directive", "Directives", "Director", "Distributed", "Document", "Earned", "Electromagnetic", "Element", "Engagement", "Engineer", "Engineering", "Enterprise", "Environment", "Environmental", "Equipment", "Estimate", "Evaluation", "Evaluation)", "Exchange", "Execution", "Executive", "Expense", "Expert", "Exploration", "Externally", "Federal", "Final", "Financial", "Findings", "Fixed","Fleet", "Fleet;", "Flight", "Flying", "Followup", "Force", "Forces,", "Foreign", "Form", "Framework", "Full", "Function", "Functionality", "Fund", "Funding", "Furnished", "Future", "Government", "Ground", "Group", "Guidance", "Guide", "Handbook", "Handling,", "Hazardous", "Headquarters", "Health", "Human", "Identification", "Improvement", "Incentive", "Incentives", "Independent", "Individual", "Industrial", "Information", "Initial", "Initiation", "Initiative", "Institute", "Instruction", "Integrated", "Integration", "Intelligence", "Intensive", "Interdepartmental", "Interface", "Interference", "Internet", "Interoperability", "Interservice", "Inventory", "Investment", "Joint", "Justification", "Key", "Knowledge", "Lead", "Leader", "Leadership", "Line", "List", "Logistics", "Maintainability", "Maintenance", "Management", "Manager", "Manual", "Manufacturing", "Marine", "Master", "Material", "Materials", "Maturity", "Measurement", "Meeting", "Memorandum", "Milestone", "Milestones", "Military", "Minor", "Mission", "Model", "Modeling", "Modernization", "National", "Naval", "Navy", "Needs", "Network", "Networks", "Number", "Objectives", "Obligation", "Observation", "Occupational", "Offer", "Office", "Officer", "Operating", "Operational", "Operations", "Order", "Ordering", "Organization", "Oversight", "Ozone", "Pacific", "Package", "Packaging,", "Parameters", "Participating", "Parts", "Performance", "Personal", "Personnel", "Planning", "Planning,", "Plans", "Plant", "Point", "Policy", "Pollution", "Practice", "Preferred", "Prevention", "Price", "Primary", "Procedure", "Procedures", "Process", "Procurement", "Product", "Production", "Professional", "Program", "Programmatic", "Programming", "Project", "Proposal", "Protection", "Protocol", "Purchase", "Quadrennial", "Qualified", "Quality", "Rapid", "Rate", "Readiness", "Reconnaissance", "Regulation", "Regulations", "Reliability", "Relocation", "Repair", "Repairables", "Report", "Reporting", "Representative", "Request", "Requirement", "Requirements", "Requiring", "Requisition", "Requisitioning", "Research", "Research,", "Reserve", "Resources", "Responsibility", "Review", "Reviews", "Safety", "Sales", "Scale", "Secretary", "Secure", "Security", "Selection", "Senior", "Service", "Services", "Sharing", "Simulation", "Single", "Small", "Software", "Source", "Staff", "Standard", "Standardization", "Statement", "Status", "Storage,", "Strategy", "Streamlining", "Structure", "Submission", "Substance", "Summary", "Supplement", "Support", "Supportability", "Surveillance", "Survey", "System", "Systems", "Subsystem", "Tactical", "Target", "Targets", "Team", "Teams", "Technical", "Technology", "Test", "Tool", "Total", "Training", "Transportation", "Trouble", "Type", "Union", "Value", "Variable", "Warfare", "Weapon", "Work", "Working", "X-Ray", "Xenon", "Year", "Yesterday", "Zenith", "Zoology"};

Codice

f[c_]:=RandomChoice[Select[terms,(StringTake[#,1]==c)&]]
g[acronym_]:=Map[f,Characters@acronym]

Esempi

Dieci candidati generati casualmente per l'acronimo ABC .

Table[Row[g["ABC"], "  "], {10}] // TableForm

Azione Ripartizione Corpo
Contabilità Budget Commercio
Controllo del budget aereo Controllo
Acquisizione Ripartizione
Azione del computer Costo del budget
Ripartizione
allineata Comune Piano di allineamento concordato Corso di
consulenza contabile Capacità di
allineamento Spazio di battaglia comune Spazio di battaglia comune
Anti-sorveglianza Controllore Spazio di battaglia


FMP

Table[Row[g["FMP"], "  "], {10}] // TableForm

Risultati Manager Protocollo
Manuale finale Acquisto
Flying Measurement Personale
Piani di produzione completi
Form Misure di misura Programmazione
Modello finanziario Programmatico
Futuro Modernizzazione Proposta Modulo di
misura finanziaria Pacchetto
, Pianificazione della manutenzione
Modellazione completa Programmatica


STM

Table[Row[g["STM"], "  "], {10}] // TableForm

Standardizzazione
Servizio di modernizzazione totale Milestone tattico
Sorveglianza Gestione dei trasporti
Sottosistema Materiali problematici
Test struttura
Scala militare Materiali di prova
Strategia Strumento Modernizzazione
Piccola tecnologia
Supportabilità minore Stato di produzione Gestione dello strumento di gestione


CRPB

Table[Row[g["CRPB"], "  "], {10}] // TableForm

Protezione della normativa cooperativa
Commander aziendale Politica di richiesta
Modifiche di base Riparazione Programmazione,
Chiusura di affari Revisioni Budget del progetto
Regolamenti di commercio Parametri
Contratti di base Prezzo rapido Base
Pratica di ricollocazione del bilancio Budget del
corso Segnalazione del personale Spazio di battaglia
Requisiti del corso Procedure del budget


SARDE

Table[Row[g["SARDE"], "  "], {10}] // TableForm

Supplemento Azioni richieste Direttive
Scala Scala Allineato Requisito giornaliero Stima giornaliera
Segretario Atlantico Requisito Direttore Spese
Software Azione Revisione Esplorazione diretta
Supporto Atto Prontezza Difesa
Software elettromagnetico Decisione abbreviata Decisione Scambio
Valutazione Valutazione Richiesta Descrizione Descrizione
Streaming esecutivo Contabilità Valuta Deposito Valutazione Valutazione
Assistente di sorveglianza Richiesta di
spesa Deposito Assistenza Assistenza Risorse Carenza Spese


2

D

Questo per lo più produce sciocchezze, ma a volte produce qualcosa di sensato, o qualcosa di così sciocco da essere umoristico.

Le parole vengono estratte da questo file JSON (~ 2,2 MB).

Il programma prende l'acronimo dal primo argomento della riga di comando e supporta un secondo argomento facoltativo che dice al programma quante frasi generare.

import std.file : readText;
import std.conv : to;
import std.json, std.random, std.string, std.stdio, std.algorithm, std.array, std.range;

void main( string[] args )
{
    if( args.length < 2 )
        return;

    try
    {
        ushort count = 1;

        if( args.length == 3 )
            count = args[2].to!ushort();

        auto phrases = args[1].toUpper().getPhrases( count );

        foreach( phrase; phrases )
            phrase.writeln();
    }
    catch( Throwable th )
    {
        th.msg.writeln;
        return;
    }
}

string[] getPhrases( string acronym, ushort count = 1 )
in
{
    assert( count > 0 );
}
body
{
    auto words = getWords();
    string[] phrases;

    foreach( _; 0 .. count )
    {
        string[] phrase;

        foreach( chr; acronym )
        {
            auto matchingWords = words.filter!( x => x[0] == chr ).array();
            auto word = matchingWords[uniform( 0, matchingWords.length )];
            phrase ~= word;
        }

        phrases ~= phrase.join( " " );
    }

    return phrases;
}

string[] getWords()
{
    auto text = "words.json".readText();
    auto json = text.parseJSON();
    string[] words;

    if( json.type != JSON_TYPE.ARRAY )
        throw new Exception( "Not an array." );

    foreach( item; json.array )
    {
        if( item.type != JSON_TYPE.STRING )
            throw new Exception( "Not a string." );

        words ~= item.str.ucfirst();
    }

    return words;
}

auto ucfirst( inout( char )[] str )
{
    if( str.length == 1 )
        return str.toUpper();

    auto first = [ str[0] ];
    auto tail  = str[1 .. $];

    return first.toUpper() ~ tail.toLower();
}

Esempi :

D:\Code\D\Acronym>dmd acronym.d

D:\Code\D\Acronym>acronym utf 5
Unchallenged Ticklebrush Frication
Unparalysed's Toilsomeness Fructose's
Umpiring Tableland Flimsily
Unctuousness Theseus Flawless
Umbrella's Tarts Formulated

2

BASH

for char in $(sed -E s/'(.)'/'\1 '/g <<<"$1");
do
    words=$(grep "^$char" /usr/share/dict/words)
    array=($words)
    arrayCount=${#array[*]}
    word=${array[$((RANDOM%arrayCount))]}
    echo -ne "$word " 
done
echo -ne "\n"

Quindi: $ bash acronym-to-phrase.sh dftbarisultato

deodorization fishgig telolecithal bashlyk anapsid
demicivilized foretell tonogram besmouch anthropoteleological
doer fightingly tubulostriato bruang amortize 


E: $ bash acronym-to-phrase.sh diyrisultato

decanically inarguable youthen
delomorphous isatin yen
distilling inhumorously yungan


Infine: $ bash acronym-to-phrase.sh rsvp

retzian sensitizer vestiarium pathognomonical
reaccustom schreiner vincibility poetizer
refractorily subspherical villagey planetule

...

La mia reazione iniziale? indurimento del trasporto senza senso


1

Pitone

Quindi, questo probabilmente non vincerà alcun concorso di popolarità, ma ho pensato che Python avesse bisogno di essere rappresentato. Funziona con Python 3.3+. Ho preso in prestito il file json di parole di @ tony-h (lo trovi qui ). Fondamentalmente, questo codice prende semplicemente l'elenco json e organizza tutte le parole in un dizionario indicizzato sulle lettere dell'alfabeto. Quindi, qualunque acronimo venga passato nell'applicazione python viene utilizzato come indice nel dizionario. Per ogni lettera nell'acronimo, viene selezionata una parola casuale tra tutte le parole indicizzate sotto quella lettera. È inoltre possibile fornire un numero di output desiderato oppure, se non viene specificato nulla, verranno generate 2 opzioni.

Il codice (l'ho salvato come phraseit.py):

import argparse
import json
import string
from random import randrange

parser = argparse.ArgumentParser(description='Turn an acronym into a random phrase')
parser.add_argument('acronym', nargs=1)
parser.add_argument('iters',nargs='?',default=2,type=int)
args = parser.parse_args()

acronym=args.acronym[0]
print('input: ' + acronym)

allwords=json.load(open('words.json',mode='r',buffering=1))

wordlist={c:[] for c in string.ascii_lowercase}
for word in allwords:
    wordlist[word[0].lower()].append(word)

for i in range(0,args.iters):
    print('output:', end=" ")
    for char in acronym:
        print(wordlist[char.lower()][randrange(0,len(wordlist[char.lower()]))], end=" ")
    print()

Alcuni output di esempio:

$ python phraseit.py abc
input: abc
output: athabaska bookish contraster
output: alcoholism bayonet's caparison

Un altro:

$ python phraseit.py gosplet 5
input: gosplet
output: greenware overemphasiser seasons potential leprosy escape tularaemia
output: generatrix objectless scaloppine postulant linearisations enforcedly textbook's
output: gutturalism oleg superstruct precedential lunation exclusion toxicologist
output: guppies overseen substances perennialises lungfish excisable tweed
output: grievously outage Sherman pythoness liveable epitaphise tremulant

Infine:

$ python phraseit.py nsa 3
input: nsa
output: newsagent spookiness aperiodically
output: notecase shotbush apterygial
output: nonobjectivity sounded aligns
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.